简体   繁体   中英

Need to sort a group of array according to specific key value php

I need help in sorting an array which has different groups with a same value for every group . i want to sort the group in descending order. please have a look below :

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [name] => rose
                    [price] => 3
                )

            [1] => Array
                (
                    [name] => daisy
                    [price] => 3
                )

            [2] => Array
                (
                    [name] => orchid
                    [price] => 3
                )

        )
[1] => Array
    (
        [0] => Array
            (
                [name] => rose
                [price] => 1
            )

        [1] => Array
            (
                [name] => daisy
                [price] => 1
            )

        [2] => Array
            (
                [name] => orchid
                [price] => 1
            )

    )

[2] => Array
    (
        [0] => Array
            (
                [name] => rose
                [price] => 2
            )

        [1] => Array
            (
                [name] => daisy
                [price] => 2
            )

        [2] => Array
            (
                [name] => orchid
                [price] => 2
            )

    )

)

And i want it to be sorted like this :

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [name] => rose
                    [price] => 3
                )

            [1] => Array
                (
                    [name] => daisy
                    [price] => 3
                )

            [2] => Array
                (
                    [name] => orchid
                    [price] => 3
                )

        )

[1] => Array
    (
        [0] => Array
            (
                [name] => rose
                [price] => 2
            )

        [1] => Array
            (
                [name] => daisy
                [price] => 2
            )

        [2] => Array
            (
                [name] => orchid
                [price] => 2
            )

    )

[2] => Array
    (
        [0] => Array
            (
                [name] => rose
                [price] => 1
            )

        [1] => Array
            (
                [name] => daisy
                [price] => 1
            )

        [2] => Array
            (
                [name] => orchid
                [price] => 1
            )

    )

)

Note i have a large array of group. But this is just a part from that to get an idea .

It is understood from above that i want the above array to be sorted according to price key in descending order .

Thanks in Advance!

give it a try.

uasort($array, function ($a, $b) {
    $price_a = array_values($a)[0]['price'];
    $price_b = array_values($b)[0]['price'];

    return $price_b - $price_a;
});

Note: if group is empty than there will be a error.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM