【发布时间】:2014-12-10 05:56:29
【问题描述】:
我正在尝试使用 array_walk() 函数来处理数组:
<?php
$array = array('n1' => 'b1', 'n2' => 'b2', 'n3' => 'b3');
array_walk($array, function(&$val, $key) use (&$array){
echo $key."\n";
if ($key == 'n1')
$val = 'changed_b1';
if ($key == 'n2' || $key == 'n3') {
unset($array[$key]);
}
});
print_r($array);
获取:
n1
n2
Array
(
[n1] => changed_b1
[n3] => b3
)
看来,删除第二个元素后——第三个元素不会被发送到回调函数。
【问题讨论】:
-
手册中有一个重要说明关于通过数组遍历函数更改结构/取消设置,php.net/manual/en/function.array-walk.php
-
@Ghost,有什么解决问题的建议吗?
-
在下面查看 hd 的答案,或者为什么不直接使用 foreach
-
其实这段代码很复杂,如果你只想得到一个没有特定键的数组,使用 unset($array["n2"], $array["n3"]);