метод переменной области {foreach {if () {variable} else {}}}

Почему это работает? Я думал, что переменные будут видны только в области видимости … Или это метод области видимости?

1) В идеале: $ variable-name будет определен первым шагом с foreach … но как?
2) почему переменная $, определенная в предложении if, доступна во всем блоке foreach?
3) в PHPStorm я получаю ошибку компиляции, но код работает …

ArrayObject __construct:

// read JSON
foreach ($jsonIterator as $key => $val) {

if ($jsonIterator->getDepth()===0){

$variable = new Preguntas_Educacion_V1($key);
$this->offsetSet($variable->getColumn(),$variable);
} else if ($jsonIterator->getDepth()===1){

//Reflection!!! call setter dynamically by Val

$function="set".ucfirst($key);
$variable->$function($val);
} else if ($jsonIterator->getDepth()===2){
//Respuestas array
}

$counter++;
}

1

Решение

«Область действия переменной — это контекст, в котором она определена. По большей части все переменные PHP имеют только одну область видимости. … Однако в пользовательских функциях вводится локальная область функций.«1

Таким образом, как только переменная определена (в для каждого loop) это будет видно в последующих итерациях.

Вы можете отключить предупреждения о неопределенных переменных в PHPStorm. Для получения дополнительной информации см. этот ответ.


1http://php.net/manual/en/language.variables.scope.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector