使用php根据特定值对数组进行排序[重复]
Posted
技术标签:
【中文标题】使用php根据特定值对数组进行排序[重复]【英文标题】:sort array on specific value with php [duplicate] 【发布时间】:2017-08-11 11:35:02 【问题描述】:我有一个包含特定值的数组,我想根据其中的特定值对数组进行排序。例如,TOTCOM_METIER DESC。 例如:
Array
(
[0] => Array
(
[TOTCOM_METIER] => 1
[metier] => Traiteur
)
[1] => Array
(
[TOTCOM_METIER] => 4
[metier] => Restauration traditionnelle
)
[2] => Array
(
[TOTCOM_METIER] => 2
[metier] => Coiffure
)
)
我想在 TOTCOM_METIER DESC 上对其进行排序以获得这个结果:
Array
(
[0] => Array
(
[TOTCOM_METIER] => 4
[metier] => Restauration traditionnelle
)
[1] => Array
(
[TOTCOM_METIER] => 2
[metier] => Coiffure
)
[2] => Array
(
[TOTCOM_METIER] => 1
[metier] => Traiteur
)
)
【问题讨论】:
【参考方案1】:<?php
$arr = Array(
0 => Array
(
'TOTCOM_METIER' => 1,
'metier' => 'Traiteur'
),
1 => Array
(
'TOTCOM_METIER' => 4,
'metier' => 'Restauration traditionnelle'
),
2 => Array
(
'TOTCOM_METIER' => 2,
'metier' => 'Coiffure'
)
);
//define custom "comparator" (in reverse order)
function cmp($a, $b)
$key = 'TOTCOM_METIER';
if($a[$key] < $b[$key])
return 1;
else if($a[$key] > $b[$key])
return -1;
return 0;
usort($arr, "cmp");
print_r($arr);
?>
【讨论】:
就像一个魅力!谢谢 在 PHP >= 7 中,您还可以将所有 if 和返回更改为return $a[$key] <=> $b[$key];
,感谢 spaceship operator。【参考方案2】:
试试这个,
function compare($a, $b)
return ($a['TOTCOM_METIER']< $b['TOTCOM_METIER']);
usort($your_array, "compare");
这里是 usort 文档,其中声明 使用用户定义的比较函数按值对数组进行排序
【讨论】:
【参考方案3】:您如何获得这些数据?如果你从数据库系统中选择,你可以在你的选择sql中使用order by TOTCOM_METIER desc
。
【讨论】:
【参考方案4】:这样你可以传递你想要的顺序,“desc”或“asc”
function sortAsc($a, $b)
return ($a[TOTCOM_METIER] < $b[TOTCOM_METIER]);
function sortDesc($a, $b)
return ($a[TOTCOM_METIER] > $b[TOTCOM_METIER]);
function sortMyArray($array, $order = "asc")
if($order === "desc")
return usort($array, "sortDesc");
return usort($array, "sortAsc");
// Call it like
sortMyArray($array, "asc");
【讨论】:
以上是关于使用php根据特定值对数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章