我见过
isset($n=$this->myvariable)
不起作用
但这有效
array_key_exists($t=$this->type, $m=$this->map)
也
if($n=$this->myvariable)
也不起作用
答案 0 :(得分:1)
isset
专门用于确定是否已设置对变量,数组索引或对象属性的引用。它需要通过其中一个。 $n = $this->myvariable
actuall评估为分配给$n
的值,而不是变量$n
本身。
if
是一种语言结构,而不是函数/方法。它确定其中的内容是否评估为true
或false
。这可以是变量或条件或函数调用,也可以是asisgnment的结果,仅举几例
array_key_exists()有两个参数:第一个是几乎任何东西,第二个是数组。这些可以通过值或其变量显式传递。例如:
array_key_exists('123', array());
完全没问题,即使没有创建或传入变量。
这与isset()不同,因为这些都会出错:
isset(array());
isset(1);
isset('somestring');
因为没有传递变量..
在我的生活中,我可以诚实地说,在JAVA和C中,指针和引用的概念更清晰,更流行,这样的事情会更容易解释:)