为什么我不能在php中的某些条件表达式中定义变量

时间:2014-03-02 16:53:45

标签: php variables

我见过

isset($n=$this->myvariable)不起作用

但这有效

array_key_exists($t=$this->type, $m=$this->map)

if($n=$this->myvariable)也不起作用

1 个答案:

答案 0 :(得分:1)

isset专门用于确定是否已设置对变量,数组索引或对象属性的引用。它需要通过其中一个。 $n = $this->myvariable actuall评估为分配给$n的值,而不是变量$n本身。

if是一种语言结构,而不是函数/方法。它确定其中的内容是否评估为truefalse。这可以是变量或条件或函数调用,也可以是asisgnment的结果,仅举几例

array_key_exists()有两个参数:第一个是几乎任何东西,第二个是数组。这些可以通过值或其变量显式传递。例如:

  array_key_exists('123', array());

完全没问题,即使没有创建或传入变量。

这与isset()不同,因为这些都会出错:

  isset(array()); 
  isset(1);
  isset('somestring');

因为没有传递变量..

在我的生活中,我可以诚实地说,在JAVA和C中,指针和引用的概念更清晰,更流行,这样的事情会更容易解释:)