>我有以下代码
<?
$fruits = array('sweet' => 'sugar', 'sour' => 'lemon', 'myfruits' => array('a' => 'apple', 'b' => 'banana'));
function test_alter(&$item1, $key, $prefix){
print $key;
print "<br />";
$item1 = "$key $prefix: $item1";
}
array_walk_recursive($fruits, 'test_alter', 'fruit');
?>
当我执行它时,我得到这个
sweet<br />sour<br />a<br />b<br />
但预期的输出是
sweet<br />sour<br />myfruits<br />a<br />b<br />
那么如何在那里打印myfruits
呢?
你不能用array_walk_recursive
.您需要使用纯array_walk
并自己提供递归:
function test_alter(&$item1, $key, $prefix) {
print $key;
print "<br />";
if(is_array($item1)) {
array_walk($item1, 'test_alter', $prefix);
}
else {
$item1 = "$key $prefix: $item1";
}
}
不能用 array_walk_recursive() 做到这一点。文档
试试这个递归函数。
$fruits = array('sweet' => 'sugar', 'sour' => 'lemon', 'myfruits' => array('a' => 'apple', 'b' => 'banana'));
function test_alter(&$item1, $key){
print $key;
print "<br />";
// recursive
if (is_array($item1)) array_walk ($item1, 'test_alter');
}
array_walk ($fruits, 'test_alter');