Сортировать массив и дочерние массивы по значению

У меня есть массив, как:

$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

Другие вопросы по тегам