Sorting a multidimensional array

I need to sort an array that might look like this:

$array[4][0] = array('id' => 1, 'value' => 2);
$array[3][2] = array('id' => 0, 'value' => 3);
$array[4][1] = array('id' => 1, 'value' => 0);
$array[1][3] = array('id' => 2, 'value' => 1);
$array[1][1] = array('id' => 3, 'value' => 0);
$array[3][0] = array('id' => 2, 'value' => 1);
$array[3][1] = array('id' => 1, 'value' => 0);
$array[1][2] = array('id' => 3, 'value' => 2);
$array[1][0] = array('id' => 2, 'value' => 1);
$array[2][1] = array('id' => 0, 'value' => 2);
$array[2][4] = array('id' => 3, 'value' => 1);

But you need to sort and return like this:

$array[1][0] = array('id' => 2, 'value' => 1);
$array[1][1] = array('id' => 3, 'value' => 0);
$array[1][2] = array('id' => 3, 'value' => 2);
$array[1][3] = array('id' => 2, 'value' => 1);
$array[2][1] = array('id' => 0, 'value' => 2);
$array[2][4] = array('id' => 3, 'value' => 1);
$array[3][0] = array('id' => 2, 'value' => 1);
$array[3][1] = array('id' => 1, 'value' => 0);
$array[3][2] = array('id' => 0, 'value' => 3);
$array[4][0] = array('id' => 1, 'value' => 2);
$array[4][1] = array('id' => 1, 'value' => 0);

Can anyone help me? It should sort both array indices from smallest to maximum index value. It sounds simple enough, but it's hardest for me to figure it out, while preserving the values.

Please help someone ...

+3
source share
3 answers

A quick 'dirty solution might look something like this:

// Sort the outer array
ksort($array); 
// Sort each inner array
foreach($array as &$innerArray)
{
    ksort($innerArray);
}
+7
source

, : http://se.php.net/manual/en/function.ksort.php http://se.php.net/manual/en/function.uksort.php

,

function sorter(array &$multidimensional) {
    foreach ($multidimensional as &$current) {
        if (is_array($current))
            sorter($current);
    }
    ksort($multidimensional);
}
+3

- :

function ksort_recursive(&$arr) {
    foreach($arr as $key => &$value) {
        if(is_array($value)) {
            ksort_recursive($value);
        }
    } unset($value);
    ksort($arr);
}

ksort_recursive($array);
+1

Source: https://habr.com/ru/post/1739105/


All Articles