为什么这样做?我认为变量只能在范围内可见......或者是范围方法?
1)理想情况下:$ variable-name将用foreach定义第一步......但是如何?
2)为什么在整个foreach块中可以访问if子句中定义的$变量?
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++;
}
答案 0 :(得分:1)
" 变量的范围是定义它的上下文。在大多数情况下,所有PHP变量只有一个范围。 ...但是,在用户定义的函数中引入了局部函数范围。" 1
因此,一旦定义了变量(在 foreach 循环中),它将在后续迭代中可见。
您可以在PHPStorm中禁用有关未定义变量的警告。有关详细信息,请参阅this answer。
1 <子> http://php.net/manual/en/language.variables.scope.php 子>