【发布时间】:2017-11-13 13:16:28
【问题描述】:
我编写了一个简单的程序来了解删除 foreach 循环中的数组元素对该循环的影响。我注意到即使我删除了元素 4,它仍然会被打印出来。为什么会这样?
代码:
$arr2 = array(1,2,3,4,5);
foreach($arr2 as $elem)
{
echo '<br>val : '.$elem;
$index=array_search(4,$arr2); // search for 4 in array
if($index != false)
{
echo ' index :'.$index.' ';
unset($arr2[$index]); // delete 4 from array
}
}
输出:
val : 1 index :3
val : 2
val : 3
val : 4 // 4 gets printed !!
val : 5
【问题讨论】:
-
使用 foreach($arr2 as @elem)
-
呃,不,不要……那不是 PHP
-
你为什么要寻找数组每次迭代的索引?这可能导致各种奇怪的行为(例如,当搜索值多次出现时)。为什么不简单地在 foreach 之前进行过滤?
-
你期望的输出是什么??