Intereting Posts
Можно ли запустить PHP include () внутри эха? Что лучше требовать (dirname (__ FILE __). '/'. 'MyParent.php'), чем просто требовать ('myParent.php')? Все электронные письма отправляются в папку спама GMail, Hotmail и других почтовых провайдеров, использующих phpmailer Настройка скрипта PHP как службы Windows MySQL Вставить строку, дублировать: добавить суффикс и повторно вставить mysqli auto увеличил первичный идентификатор, который был сгенерирован Yahoo Social SDK Помощь по настройке PHP? Форма представления не будет оставаться на одной странице Как получить имя действия в контроллере Symfony2? PHP memcached Fatal error: Class 'Memcache' не найден Как отобразить недавнюю глобальную должность в wordpress multisite Как получить точный модифицированный PDF-файл с использованием FPDF / FPDI? Может ли система авторизации Laravel использовать существующую базу данных? Как правильно использовать транзакции MySQL Получение первого дня недели в месяц с strtotime

Заказать многомерный массив рекурсивно на каждом уровне PHP

У меня есть массив этой формы:

Array ( [first_level] => Array ( [dir_3] => Array ( [subdir_1] => Array ( [file_2.mp4] => stdClass Object ( [name] => file_2.mp4 ) [file_1.mp4] => stdClass Object ( [name] => file_1.mp4 ) ) ) [dir_1] => Array ( [subdir_2] => Array ( [file_6.mp4] => stdClass Object ( [name] => file_6.mp4 ) [file_9.mp4] => stdClass Object ( [name] => file_9.mp4 ) [file_7.mp4] => stdClass Object ( [name] => file_7.mp4 ) ) [subdir_1] => Array ( [file_8] => stdClass Object ( [name] => file_8.mp4 ) ) ) ) ) 

Мне нужно заказать его так:

 Array ( [first_level] => Array ( [dir_1] => Array ( [subdir_1] => Array ( [file_8] => stdClass Object ( [name] => file_8.mp4 ) ) [subdir_2] => Array ( [file_6.mp4] => stdClass Object ( [name] => file_6.mp4 ) [file_7.mp4] => stdClass Object ( [name] => file_7.mp4 ) [file_9.mp4] => stdClass Object ( [name] => file_9.mp4 ) ) ) [dir_3] => Array ( [subdir_1] => Array ( [file_1.mp4] => stdClass Object ( [name] => file_1.mp4 ) [file_2.mp4] => stdClass Object ( [name] => file_2.mp4 ) ) ) ) ) 

Я просмотрел другие подобные вопросы, и я пытался решить это с помощью usort, но я не мог обойти его. : S

Есть идеи?

    Используйте рекурсивную функцию:

     // Note this method returns a boolean and not the array function recur_ksort(&$array) { foreach ($array as &$value) { if (is_array($value)) recur_ksort($value); } return ksort($array); } 

    Вам нужно использовать ksort .

     // Not tested ... function recursive_ksort(&$array) { foreach ($array as $k => &$v) { if (is_array($v)) { recursive_ksort($v); } } return ksort($array); } 
     function ksort_recursive(&$array) { if (is_array($array)) { ksort($array); array_walk($array, 'ksort_recursive'); } } 

    Как отмечалось в их комментариях, ответы с return ksort() неверны, поскольку ksort () возвращает успешный bool.

    Обратите внимание, что эта функция не выбрасывает «Warning: ksort () ожидает, что параметр 1 является массивом», когда задан не-массив – это соответствует моим требованиям, но, возможно, не вашим.