Foreach( $array as $key => $value ) существование значения $value

Рейтинг: 0Ответов: 2Опубликовано: 25.11.2014

Как я понимаю, цикл foreach оперирует не исходным массивом, а его копией, поэтому в примере ниже в $value будет находиться копия элементов массива.

Так почему же после прохода массива эта переменная существует и имеет значение?

$array = array("PHP","foo","Random Stuff","JS" );

foreach( $array as $key => $value ){}

if(isset($value) && !empty($value)){
    var_dump($value);
}

Ответы

▲ 3Принят

foreach не копирует массив, а создает копию элемента массива в переменную. Разумеется, переменная $value существует после окончания цикла. А в приведенном коде, еще и $key. Куда им деться-то? Или Вы где-то видели, как for сам "убивает" за собой "счетчик"?

Всё прекрасно описано в документации. Читайте внимательнее.

▲ 1

Чистка мусора. Чтобы ваше приложение не отжирало 100% оперативной памяти.