4

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

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

提前致谢

4

2 回答 2

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()),在这种情况下,将 的返回值foo()放入$a

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

于 2010-09-20T22:10:41.400 回答
1

它确实返回孩子,因为分配只返回分配的任何内容。

它是否应该在成功时返回 true 不是一个规则,所以如果它被记录为返回 child,它是正确的。

于 2010-09-20T22:12:36.853 回答