Fel*_*ida 4 php function return-value associativity
public function add($ child){return $ this-> children [] = $ child; }
顺便说一句,这是Dagfinn Reiersol的PHP in Action的摘录.根据这本书,这会返回$ child,但是如果成功分配则不应该返回true,否则返回false?
提前致谢
它回来了$child.这是因为$child首先添加到数组中$this->children[].然后,返回此赋值的结果.
从本质上讲,它是以下的简写:
public function add($child){
$this->children[]=$child;
return $child;
}
Run Code Online (Sandbox Code Playgroud)
这种类型的快捷方式有效,因为在PHP中,赋值是"右关联":http://www.php.net/manual/en/language.operators.precedence.php
这意味着$a = ($b = 3)实际上是从右到左进行评估,然后3存储在$b 其中 $a.此外,这是我在页面上的一个注释,提供了一个链接:
尽管=的优先级低于大多数其他运算符,但PHP仍然允许使用类似于以下内容的表达式:
if (!$a = foo())在这种情况下,返回值将foo()被放入$a.
更多信息:http://en.wikipedia.org/wiki/Operator_associativity