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

Мне нужно рекурсивно отменить массив HUGE, который имеет много уровней вспомогательных массивов, и мне нужно сохранить все ключи (некоторые из которых являются int-ключами, а некоторые – строковыми), может кто-то мне помочь? Возможно, пример с использованием array_reverse? Кроме того, использует array_reverse единственный / лучший способ сделать это?

Благодаря 🙂

Попробуй это:

function array_reverse_recursive($arr) { foreach ($arr as $key => $val) { if (is_array($val)) $arr[$key] = array_reverse_recursive($val); } return array_reverse($arr); } 

Рекурсивный:

 <?php $a = array(1,3,5,7,9); print_r($a); function rev($a) { if (count($a) == 1) return $a; return array_merge(rev(array_slice($a, 1, count($a) - 1)), array_slice($a, 0, 1)); } $a = rev($a); print_r($a); ?> 

вывод:

 Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 ) Array ( [0] => 9 [1] => 7 [2] => 5 [3] => 3 [4] => 1 ) 

Реверсирование огромного массива php in situ (но не рекурсивно):

 function arrayReverse(&$arr){ if (!is_array($arr) || empty($arr)) { return; } $rev = array(); while ( false !== ( $val = end($arr) ) ){ $rev[ key($arr) ] = $val; unset( $arr[ key($arr) ] ); } $arr = $rev; } //usage $test = array(5, 'c'=>100, 10, 15, 20); arrayReverse($test); var_export($test); // result: array ( 3 => 20, 2 => 15, 1 => 10, 'c' => 100, 0 => 5, )