2016-09-22 2 views
0

У меня есть массив, как:Сортировка массива и дочерние массивы по значению

$array = array(
    4 => array(
     'position' => 0 
     'children' => array(
     ) 
    ), 
    2 => array(
     'position' => 0 
     'children' => array(
      3 => array(
       'position' => 1 
      ) 
      5 => array(
       'position' => 0 
      ) 
     ) 
    ) 
) 

Мне нужно сортировать внешние массивы (2 & 4) с помощью клавиши «позиции», по возрастанию (0 вверх), а затем сортировать каждый внутренний массив этих («детей») по их соответствующей позиции.

Может быть 6 основных массивов, с 6-ю дочерними массивами для сортировки.

Каков наилучший способ для этого?

ответ

1

Если я понимаю ваше объяснение проблемы правильно, следующий код будет работать для вас:

//sort the outer array 
usort($array, function($a, $b) { 
    return $a['position'] - $b['position']; 
}); 
//sort childrens 
foreach ($array as &$item) { 
    usort($item['children'], function($a, $b) { 
     return $a['position'] - $b['position']; 
    }); 
} 

В любом случае, usort является уроженцем функции PHP, которая будет очень удобно для описанного случая. http://php.net/manual/en/function.usort.php

+0

См. Я действительно пробовал это. Я не прошел мимо ссылки, может, это была моя проблема? С тех пор я изменил это, поэтому мне это не нужно. –

+1

Да, вам нужно передать суб-массив по ссылке, чтобы изменить его –

Смежные вопросы