ovi.ro

ovi.ro

Foreach with reference

If you iterate over an array with & you should unset the value variable after to not modify the array accidentally after.

$array = array('a', 'b', 'c', 'd');

foreach($array as $key=>&$value) {
    if ($key = 3) {
        // change d to x
        $value = 'x';
    }
}
// this will affect the $array to
$value = 'z';
// $array = array('a', 'b', 'c', 'z');

Should do like this

$array = array('a', 'b', 'c', 'd');

foreach($array as $key=>&$value) {
    if ($key = 3) {
        // change d to x
        $value = 'x';
    }
}
unset($value);
$value = 'z';  // if you do this accidentally you get a notice but no effect on the array
// $array = array('a', 'b', 'c', 'x');