2010-09-20 127 views
4

public function add($ child){ return $ this-> children [] = $ child; }这个PHP函数返回什么?

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

在此先感谢

回答

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

+0

嗯..好吧..我现在没有太多时间,但我会多给点思考,然后回来并将其标记为正确的答案。谢谢。 – 2010-09-20 22:18:44

+0

好的谢谢,我发布了什么样的表达会看起来像不使用快捷方式。 – 2010-09-20 22:21:06

+0

很好的解释@SimpleCoder。但是,长期解释需要的是一个完美的例子,说明为什么这种简写在现实生活中是一个糟糕的想法。希望PHP in Action的作者使用它作为如何编写可维护代码的案例研究。 – 2010-09-20 22:36:40

1

它返回的孩子,因为分配正义返回任何分配。

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