Php 按元素对多维数组排序

Php 按元素对多维数组排序,php,arrays,sorting,Php,Arrays,Sorting,我想按子表中的值对该数组进行排序。我尝试了Usort()方法,但无法排序 foreach ($res as $r) { usort($r, function($a1, $a2) { $v1 = $a1['WeekNumDay']; $v2 = $a2['WeekNumDay']; return $v1 - $v2; // $v2 - $v1 to reverse direction }

我想按子表中的值对该数组进行排序。我尝试了Usort()方法,但无法排序

    foreach ($res as $r) {
        usort($r, function($a1, $a2) {
            $v1 = $a1['WeekNumDay'];
            $v2 = $a2['WeekNumDay'];
            return $v1 - $v2; // $v2 - $v1 to reverse direction
        });
    }
在我的数组中,我想按键['WeekNumDay']排序

Array
(
    [R422] => Array
        (

            [0] => Array
                (
                    [WeekNumDay] => 19321
                    [Day1DeliveryTime] => 52932000
                )

            [1] => Array
                (
                    [WeekNumDay] => 18331
                    [Day1DeliveryTime] => 42770000
                )

            [2] => Array
                (
                    [WeekNumDay] => 19305
                    [Day1DeliveryTime] => null
                )
        )

)

您能帮我吗?

如果您只需更改以下行,应该可以使用:

foreach ($res as $r) {
    usort($r, function($a1, $a2) {
        // ...
    });
}
对下列事项:

foreach ($res as $k => $r) {

    usort($r, function($a1, $a2) {
        // ...
    });

    $res[$k] = $r; // Edit the original array.

}
它应该工作的原因是usort接受数组作为引用,一旦您将
$r
排序为正确的顺序,则需要更改原始数组,因此:

$res[$k] = $r;

如果您只需更改以下行,则应该可以正常工作:

foreach ($res as $r) {
    usort($r, function($a1, $a2) {
        // ...
    });
}
对下列事项:

foreach ($res as $k => $r) {

    usort($r, function($a1, $a2) {
        // ...
    });

    $res[$k] = $r; // Edit the original array.

}
它应该工作的原因是usort接受数组作为引用,一旦您将
$r
排序为正确的顺序,则需要更改原始数组,因此:

$res[$k] = $r;
foreach($arr as$k=>v){
usort($v,功能($a1,$a2){
返回$a1['WeekNumDay']$a2['WeekNumDay'];//仅限太空船操作员php 7+
});
$arr[$k]=$v;//将排序后的数组返回到原始容器数组很重要
}
注意:第一个参数是通过引用传递的,因此传递
$arr[$k]
也可以,因为php会指出$v容器的位置

阅读有关的更多信息。

foreach($arr as$k=>$v){
usort($v,功能($a1,$a2){
返回$a1['WeekNumDay']$a2['WeekNumDay'];//仅限太空船操作员php 7+
});
$arr[$k]=$v;//将排序后的数组返回到原始容器数组很重要
}
注意:第一个参数是通过引用传递的,因此传递
$arr[$k]
也可以,因为php会指出$v容器的位置


了解更多信息。

这似乎有效。但是你不保存结果,在foreach-foreach($res-as&$r){中使用引用似乎是可行的。但是你不保存结果,在foreach-foreach($res-as&$r){“$res[$k]和$r本质上是一样的,但是一个是数组,一个是数组的元素。”嘿?不。顺便说一下,usort的第一个参数是通过引用传递的。”$res[$k]和$r本质上是一样的,但一个是数组,一个是数组的元素。“Heuh?不。顺便说一下,usort第一个参数是通过引用传递的。