Сортировать массив и дочерние массивы по значению
У меня есть массив, как:
$array = array(
4 => array(
'position' => 0
'children' => array(
)
),
2 => array(
'position' => 0
'children' => array(
3 => array(
'position' => 1
)
5 => array(
'position' => 0
)
)
)
)
Мне нужно отсортировать внешние массивы (2 и 4) по ключу 'position', по возрастанию (0 вверх), а затем отсортировать каждый внутренний массив из них ('children') по их соответствующей позиции.
Там может быть 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