我有这个数组:
$array = array('a' => 'apple' , 'c' => 'cat', 'ar' => array('d' => 'dog', 'e' => 'elephant'));
1.4.3:
Array
(
[a] => apple
[c] => cat
[ar] => Array
(
[d] => dog
[e] => elephant
)
)
如何在保留键的同时使上面嵌套数组的值大写。我试过这个:
function upper($str){
return strtoupper($str);
}
$array_upper = array_map('upper', $array);
但它似乎不适用于嵌套数组,因为这是它的结果:
Array
(
[a] => APPLE
[c] => CAT
[ar] => ARRAY
)
虽然我想要这样的结果:
Array
(
[a] => APPLE
[c] => CAT
[ar] => ARRAY
(
[d] => DOG
[e] => ELEPHANT
)
)
尝试使用array_walk
和array_walk_recursive
,但在返回数组上使用print_r(...)
结果为1
。
所以基本上如何将回调函数应用于可以嵌套到n级的嵌套数组。这应该很容易,但我遗漏了一些东西:(
答案 0 :(得分:2)
array_walk_recursive()
应该有效,但它会修改你传入的数组并返回一个bool,这就是你打印1
的原因。
请注意,您需要确保作为回调传递的函数还将第一个参数(数组元素值)作为引用并修改它而不是返回修改后的值。 (与array_map()
不同),例如
function upper(&$str){
$str = strtoupper($str);
}