如何在PHP中基于子数组值对数组排序

时间:2019-06-13 07:25:39

标签: php arrays sorting

我有这样的数组

Array
(
    [0] => Array
        (
            [id] => 16059
            [product_id] => 4013
            [Product] => Array
                (
                    [id] => 4013
                    [name] => XYZ
                )

        )

    [1] => Array
        (
            [id] => 16060
            [product_id] => 4462
            [Product] => Array
                (
                    [id] => 4462
                    [name] => MNOP
                )

        )

    [2] => Array
        (
            [id] => 16061
            [product_id] => 4473
            [Product] => Array
                (
                    [id] => 4473
                    [name] => ABCD
                )

        )
)

如何使用Product> name升序来缩短此数组。我可以使用for-each循环,但是有没有循环的方法吗?

3 个答案:

答案 0 :(得分:2)

usort()strcmp()一起使用:

usort($array, function($a, $b) {
   return strcmp($a['Product']['name'] , $b['Product']['name']);
});

print_r($array);

输出:-https://3v4l.org/Cb5S5

答案 1 :(得分:1)

尝试-

usort($array, function($a, $b) {
    return $a['Product']['name'] > $b['Product']['name'];
});

usort()

答案 2 :(得分:1)

这是摘要,

$t = [];
foreach ($arr as $key => $value) {
    $t[$key] = $value['Product']['name'];
}
array_multisort($t, SORT_ASC, $arr);

首先,获取该名称的数据并创建一个数组。
将用于排序条件的相关数组传递到多维数组。

Demo