phparrayssortingmultidimensional-array

Sort values within each row of a 2d array


My input array is like this:

[0] => Array
    (
        [0] => 2
        [1] => 5
        [2] => 8
        [3] => 1
    )

[1] => Array
    (
        [0] => 7
        [1] => 4
        [2] => 1
    )

My desired result would be:

[0] => Array
    (
        [3] => 1
        [0] => 2
        [1] => 5
        [2] => 8
    )

[1] => Array
    (
        [2] => 1
        [1] => 4
        [0] => 7

    )

Solution

  • simple way with asort

    array_map(function($v){asort($v); return $v;}, $array);
    

    Or you can use uasort()

    You can use uasort and array_map to sort the elements. for php7+

    array_map(function($v){uasort($v, function($a, $b){return $a <=> $b;}); return $v;}, $array);
    

    for version<7 use this compare funciton of uasort

    function cmp($a, $b) {
        if ($a == $b) {
            return 0;
        }
        return ($a < $b) ? -1 : 1;
    }