我尝试用DES中的“delais_livraison”在php中对我的数组进行排序,但我不知道我该怎么做
在第一个级别中,我预计会有第一个Etoile => 25
,然后是Feuillage => 10
Array
(
[A] => Array
(
[0] => Array
(
[Feuillage] => Array
(
[delais_livraison] => 10
)
)
[1] => Array
(
[Étoiles] => Array
(
[delais_livraison] => 25
)
)
)
[B] => Array
(
[0] => Array
(
[Grenouillère] => Array
(
[delais_livraison] => 7
)
)
[1] => Array
(
[Chaussons] => Array
(
[delais_livraison] => 0
)
)
)
)
编辑: 这个我的数组是如何构建的 pastebin
答案 0 :(得分:1)
试试:
$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
解决方案使用PHP 5.3.0
中引入的anonymous function。对于旧版本,只需创建一个函数并在usort
函数中指定它:
function my_sort_function($itemA, $itemB){
// ...
}
usort($group, 'my_sort_function');
答案 1 :(得分:0)
由于您的阵列有两个级别,您希望如何管理全局排序? 你想对每个子数组(A,B,...)进行排序吗?
在这种情况下,方法是对每个子数组(A和B)使用函数uksort,并定义自己的比较函数来比较delais_livraison值。
答案 2 :(得分:-1)