Because it changes the value of $var
. After the foreach()
it's no longer an array but is set to the last value in the array.
$var = array('apple', 'orange');
foreach ($var as $var) {
echo $var."<br/>";
}
echo $var; //orange
If you don't want to change the variable's value, it'll need to be a different variable name:
$var = array('apple', 'orange');
foreach ($var as $fruit) {
echo $fruit."<br/>";
}
echo $var; //array
As @UselessIntern pointed out, it's fine if you're not going to use the variable after looping through it, but it's definitely not encouraged because it can lead to confusion.
As @PLB pointed out, it iterates over a copy of the $var
not $var
itself. So every iteration the value of $var
is changing, but it doesn't break the loop because it's looping over the copy that was created.