我需要递归地反转具有多个子数组级别的巨大数组,并且我需要保留所有的键(其中一些是int键,有些是字符串键),可以有人请帮助我吗?也许一个例子使用array_reverse?此外,正在使用array_reverse这样做的唯一/最好的方法?PHP需要递归地反转一个数组
谢谢:)
我需要递归地反转具有多个子数组级别的巨大数组,并且我需要保留所有的键(其中一些是int键,有些是字符串键),可以有人请帮助我吗?也许一个例子使用array_reverse?此外,正在使用array_reverse这样做的唯一/最好的方法?PHP需要递归地反转一个数组
谢谢:)
:
<?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阵列(但不是递归):
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,)
你为什么不能以相反的顺序走路? – 2010-11-05 05:55:29
也许是一个功课问题? – 2010-11-05 06:08:01
反正,决定走相反的顺序,但似乎太多的代码,因为我只是重复相同的20行代码每个if语句在反向命令... argg – SoLoGHoST 2010-11-05 06:35:47