我有以下代码
<?
$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
?
答案 0 :(得分:2)
您无法使用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";
}
}
答案 1 :(得分:1)
无法使用array_walk_recursive()执行此操作。 Documentation
试试这个递归函数。
$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');