提问人:Red Devil 提问时间:4/14/2022 最后编辑:Red Devil 更新时间:4/16/2022 访问量:27
排序多维内数组 PHP
Sort multi-dimentional inner array PHP
问:
我一直在尝试对多维内部数组进行排序,我尝试了 array_multisort() 方法,但在我的情况下不起作用。
$array = [
[
'sizes'=>[
[
'weight'=>25,
'height'=>110
], [
'weight'=>45,
'height'=>110
],
]
],
[
'sizes'=>[
[
'weight'=>80,
'height'=>120
],[
'weight'=>20,
'height'=>120
]
]
]
];
我需要根据权重对上述数组进行排序,如果按最高权重排序,则数组应返回具有最高权重的尺寸块,反之亦然。在这种情况下,“权重”:80 是最高的,如果按最低的第 1 个“权重”排序:20 应该是第一位。
排序后的预期输出 SORT_ASC 和 SORT_DESC
$array = [
[
'sizes'=>[
[
'weight'=>80,
'height'=>120
],[
'weight'=>20,
'height'=>120
]
]
],
[
'sizes'=>[
[
'weight'=>25,
'height'=>110
], [
'weight'=>45,
'height'=>110
],
]
]
];
答:
1赞
CBroe
4/14/2022
#1
您可以使用从子数组中提取权重值,然后使用这些值,然后使用比较运算符来比较这两个最大值:array_column
max
<=>
usort($array, function($a, $b) {
return max(array_column($b['sizes'], 'weight')) <=>
max(array_column($a['sizes'], 'weight'));
});
这是降序,升序是$a,$b,乘以 -1。
评论