为什么值4在从数组中删除后才会被打印

时间:2017-06-12 06:54:06

标签: php arrays

我编写了一个简单的程序来理解在该循环中删除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 

1 个答案:

答案 0 :(得分:2)

将以下行更改为:

foreach($arr2 as &$elem)

您还应该阅读有关PHP references的信息。 foreach适用于数组的副本,而不是实际的数组。