Intereting Posts
Laravel 5 добавить результаты запроса в foreach к массиву PHP: фильтрация SQL-запроса с помощью опций выбора Простая функция PHP для удаления последней строки из текстового файла, не работающего Определение наличия файла в Laravel 5 Почему оператор pre / post increment ведет себя неправильно? Кнопка WooCommerce Plus / Minus в корзине показывает с перерывами PHP sudo в shell_exec Резервное копирование Doctrine Включить Android-приложение для подключения к Интернету получение суммарных массивов счетчиков многомерного массива Как хэш длинные пароли (> 72 символа) с blowfish Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, строка задана Как я могу получить подсветку синтаксиса HTML в моем редакторе для CakePHP? Если имена верхних регистров преобразуются в правильное дело, обрабатываются «О'Хара», «Макдональд», «Ван дер Слоут» и т. Д. Как получить агрегированные дни из PHP DateTime :: diff?

Получение данных из одного массива в обратном порядке

У меня есть массив, похожий на один путь:

array( 'data1' => <some data>, 'next' => array( 'data2' => <some data>, 'next' => array( 'data3' => <some data>, 'next' => array( 'data4' => <some data>, 'next' => array( 'data5' => <some data>, 'next' => ..... etc to data n ); ); ); ); ); 

Мне нужно получить данные изнутри массивов в обратном порядке. (данные n, …, данные 2, данные 1) Знаете ли вы хороший метод для этого?

Вы не ищете обратную сторону массива, но вы ищете что-то обратное .

Лучшее понимание первого рода обратного может помочь вам.

Вам нужен родительский элемент каждого отдельного элемента. Родитель всегда является предыдущим, если вы переходите дальше . Поэтому, если вы добавите предыдущий в качестве родителя, то последний элемент массива – тот, который вы ищете.

Так звучит прямо. Сложнее всего выразить это с помощью так называемых переменных aliasing / reference.

Давайте добавим всех родителей и, пройдя по массиву, удалим 'next' запись после ссылки на нее:

 /* traverse the path on 'next' and keep previous to set 'parent' of current */ $walk = &$array; // start at root node while ($walk) { if (isset($previous)) { $walk['parent'] = &$previous; } $previous = &$walk; $hasNext = array_key_exists('next', $walk); if ($hasNext) { $walk = &$walk['next']; unset($previous['next']); } else { break; } } unset($previous); с /* traverse the path on 'next' and keep previous to set 'parent' of current */ $walk = &$array; // start at root node while ($walk) { if (isset($previous)) { $walk['parent'] = &$previous; } $previous = &$walk; $hasNext = array_key_exists('next', $walk); if ($hasNext) { $walk = &$walk['next']; unset($previous['next']); } else { break; } } unset($previous); 

Как записано, последний элемент будет содержать массив, который вы ищете. Этот последний элемент $walk здесь:

 print_r($walk); 

Что дает вам ( демо ):

 Array ( [data5] => <some data5> [parent] => Array ( [data4] => <some data4> [parent] => Array ( [data3] => <some data3> [parent] => Array ( [data2] => <some data2> [parent] => Array ( [data1] => <some data1> ) ... ) 

Надеюсь, это полезно и понятно.

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

 $myArray[count($myArray) - ++$index] 

как насчет этого?

http://php.net/manual/en/function.array-walk.php

http://php.net/manual/en/function.array-reverse.php

Если вы можете сказать нам, что вы хотите сделать, нам будет легче помочь вам.

EDIT: Из вашего комментария я считаю, что вы смотрите на функцию array_reverse.

Вот что вы ищете:

PHP Необходимо рекурсивное изменение массива

обратите внимание, что это не изменит внутренний массив.

 $arr = array( 'data1' => 'some data', 'next' => array( 'data2' => 'some data', 'next' => '..... etc to data n' ) ); $rev = array_reverse($arr); print_r($rev); 

используйте array_reverse (Array); функция может помочь решить вопрос.