【发布时间】:2010-09-20 22:09:34
【问题描述】:
公共函数添加($child){ 返回 $this->children[]=$child; }
顺便说一句,这是 Dagfinn Reiersol 的 PHP in Action 的摘录。根据这本书,这会返回 $child,但它不应该在分配成功的情况下返回 true,否则返回 false?
提前致谢
【问题讨论】:
标签: php function return-value associativity
公共函数添加($child){ 返回 $this->children[]=$child; }
顺便说一句,这是 Dagfinn Reiersol 的 PHP in Action 的摘录。根据这本书,这会返回 $child,但它不应该在分配成功的情况下返回 true,否则返回 false?
提前致谢
【问题讨论】:
标签: php function return-value associativity
它返回$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。
【讨论】:
= 误认为 ==。这就是令人讨厌的错误和错误蔓延的方式。
它确实返回孩子,因为赋值只返回分配的任何内容。
成功时是否应该返回true并不是一个规则,所以如果记录返回child,那是正确的。
【讨论】: