排序多维内部数组 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
                ]
                ]

        ]
    ];

我需要根据权重对上述数组进行排序,如果按最高权重数组排序,应该 return 大小块具有最高权重,反之亦然。在这种情况下,“权重”:80 是最高的,如果按最低的第一个“权重”排序:20 应该排在第一位。

SORT_ASC 和 SORT_DESC

排序后的预期输出
 $array = [
        [
            'sizes'=>[
                [
                    'weight'=>80,
                    'height'=>120
                ],[
                    'weight'=>20,
                    'height'=>120
                ]
                ]

        ],
        [
            'sizes'=>[
                [
                    'weight'=>25,
                    'height'=>110
                ], [
                    'weight'=>45,
                    'height'=>110
                ],

                ]
            ]
    ];

您可以使用 array_column 从 sub-array 中提取权重值,然后对这些使用 max,然后使用 <=> 比较运算符比较这两个值最大值:

usort($array, function($a, $b) {
    return max(array_column($b['sizes'], 'weight')) <=>
           max(array_column($a['sizes'], 'weight'));
});

这适用于降序,对于升序,您需要分别调换 $a 和 $b。乘以-1.