Я написал простую программу, чтобы понять эффект удаления элемента массива внутри цикла foreach в этом цикле. Я заметил, что даже если я удалил элемент 4, когда 1-й элемент массива вошел в итерацию foreach, он все равно будет напечатан. Почему это так?
код:
$arr2 = array(1,2,3,4,5);
foreach($arr2 as $elem)
{
echo '
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
Подробнее здесь: https://stackoverflow.com/questions/444 ... it-is-dele
Мобильная версия