Php 按键值对关联数组排序
我试着用php中的DESC按delais_livraison对数组进行排序,但我不知道该怎么做 在第一个级别中,我希望第一个Etoile=>25,然后是Feuillage=>10 编辑: 这就是我的阵列是如何构建的Php 按键值对关联数组排序,php,arrays,sorting,Php,Arrays,Sorting,我试着用php中的DESC按delais_livraison对数组进行排序,但我不知道该怎么做 在第一个级别中,我希望第一个Etoile=>25,然后是Feuillage=>10 编辑: 这就是我的阵列是如何构建的 您似乎在寻找,或者,如果您必须提供自己的比较功能,只需尝试: $data = array( 'A' => array( array('Feuillage' => array('delais_livraison' => 10)),
您似乎在寻找,或者,如果您必须提供自己的比较功能,只需尝试:
$data = array(
'A' => array(
array('Feuillage' => array('delais_livraison' => 10)),
array('Étoiles' => array('delais_livraison' => 25)),
),
'B' => array(
array('Grenouillère' => array('delais_livraison' => 7)),
array('Chaussons' => array('delais_livraison' => 0)),
),
);
foreach ($data as &$group) {
usort($group, function($itemA, $itemB){
$a = current($itemA)['delais_livraison'];
$b = current($itemB)['delais_livraison'];
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
});
}
输出:
array (size=2)
'A' =>
array (size=2)
0 =>
array (size=1)
'Étoiles' =>
array (size=1)
'delais_livraison' => int 25
1 =>
array (size=1)
'Feuillage' =>
array (size=1)
'delais_livraison' => int 10
'B' => &
array (size=2)
0 =>
array (size=1)
'Grenouillère' =>
array (size=1)
'delais_livraison' => int 7
1 =>
array (size=1)
'Chaussons' =>
array (size=1)
'delais_livraison' => int 0
PHP5.3.0中引入的解决方案使用。对于旧版本,只需创建一个函数并在usort函数中指定它:
function my_sort_function($itemA, $itemB){
// ...
}
usort($group, 'my_sort_function');
由于阵列有两个级别,您希望如何管理全局排序? 是否要对每个子数组a、B等进行排序
在这种情况下,方法是为每个子数组A和B使用函数,并定义自己的比较函数来比较delais_livraison值。提供所需的输出。尝试使用var_export或json_encode。向我们展示您到目前为止所做的尝试和得到的结果。现在您知道要使用它做什么,最好看看您是如何创建此数组的。它似乎不是专门为这个目的而设计的,也可能不是为任何其他目的而设计的。Hwo是一个可以帮助他的关键排序。当前对我不起作用。我有一个错误解析错误:语法错误,意外的t_函数以秒数击败我,对我很好@路德维希罗德里格斯当你把它复制到你的代码中并更改字段名时,你一定把它搞砸了。您应该只需要将第一个foreach循环中的$data转换为保存数组的变量的名称。
function my_sort_function($itemA, $itemB){
// ...
}
usort($group, 'my_sort_function');