这是怎么回事?
我想知道为什么!
所以我问你!
谢谢!
<?php
$arr = array('a','b','c','d',array(1,2,3,4,5));
var_dump($arr);
foreach($arr as &$value){
if($value == 'c'){
unset($value);
}
if(is_array($value)){
foreach ($value as $key => &$v) {
if($v == 2){
unset($v);
}
}
}
}
var_dump($arr);
?>这是结果:
array (size=5)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 =>
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
array (size=5)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 => &
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 5发布于 2013-03-12 08:48:32
如果你想从你正在迭代的数组中删除一项--你需要unset数组的键,而不是它的值:
foreach($arr as $key => $value){
if (...) {
unset($arr[$key]);
}
}您当前的解决方案并不像您预期的那样工作,因为任何特定迭代上的&$value都是对存储在$arr中的同一变量的另一个引用。因此,您取消设置的是本地变量,而不是原始变量。
https://stackoverflow.com/questions/15351287
复制相似问题