这个PHP函数返回什么?

时间:2010-09-20 22:09:35

标签: php function return-value associativity

public function add($ child){         返回$ this-> children [] = $ child;     }

顺便说一句,这是Dagfinn Reiersol的PHP in Action的摘录。根据这本书,这会返回$ child,但是如果成功分配则不应该返回true,否则返回false?

提前致谢

2 个答案:

答案 0 :(得分:9)

返回$child。这是因为$child首先添加到数组$this->children[]。然后,返回此赋值的结果。

基本上,它是:

的简写
public function add($child){
    $this->children[]=$child;
    return $child;
}

这种类型的快捷方式有效,因为在PHP中,赋值是“右关联的”:http://www.php.net/manual/en/language.operators.precedence.php

这意味着$a = ($b = 3)实际上是从右到左进行评估,3存储在$b 中,然后 $a。另外,这是我在页面上提供的链接:

  

虽然=的优先级低于   大多数其他运营商,PHP仍然会   允许表达式类似于   以下:if (!$a = foo()),其中   case放置foo()的返回值   进入$a

更多信息:http://en.wikipedia.org/wiki/Operator_associativity

答案 1 :(得分:1)

它确实返回了child,因为赋值只返回指定的内容。

是否应该在成功时返回true不是一个规则,所以如果记录以返回子项,那就是正确的。