Php 按元素对多维数组排序
我想按子表中的值对该数组进行排序。我尝试了Usort()方法,但无法排序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 }
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第一个参数是通过引用传递的。