PHP 返回(值); vs 返回值;
Posted
技术标签:
【中文标题】PHP 返回(值); vs 返回值;【英文标题】:PHP return(value); vs return value; 【发布时间】:2011-02-24 16:43:27 【问题描述】:return($var);
和 return $var;
除了用括号括起来之外有什么区别吗?
【问题讨论】:
【参考方案1】:除非您通过引用返回,否则它们的含义相同。最好排除括号。来自the docs:
注意:请注意,由于
return()
是一种语言结构而不是函数,因此不需要将其参数括在括号中。将它们排除在外是很常见的,实际上您应该这样做,因为在这种情况下 php 要做的工作较少。
注意:当通过引用返回时,你不应该在你的返回变量周围使用括号,因为这不起作用。您只能通过引用返回变量,而不是语句的结果。如果你使用
return ($a)
;那么您返回的不是变量,而是表达式($a)
的结果(当然,也就是$a
的值)。
【讨论】:
工作越少越好,谢谢。我猜这也适用于echo
?
@Josh K:确实如此(另外,使用逗号而不是连接运算符)。
还要注意你可怜的过度劳累的手指的工作量减少了!
@webbie:你什么意思?喜欢echo "Hello", $person->name, " !";
?【参考方案2】:
来自PHP Manual:
“当通过引用返回时,你不应该在你的返回变量周围使用括号,因为这不起作用。你只能通过引用返回变量,而不是语句的结果。如果你使用 return ($a); 那么你' 不是返回变量,而是表达式 ($a) 的结果(当然也就是 $a 的值)。”
编辑:
这意味着return($var)
和return $var
之间存在差异。具体来说,前者会返回$var
的值,后者会返回$var
本身。
【讨论】:
【参考方案3】:请注意,由于 return() 是一种语言结构而不是函数,因此不需要在其参数周围加上括号。 将它们排除在外是很常见的,实际上您应该这样做,因为在这种情况下 PHP 要做的工作较少。
您应该在通过引用返回时不要在返回变量周围使用括号,因为这不起作用。您只能通过引用返回变量,而不是语句的结果。如果你使用 return ($a);那么你返回的不是变量,而是表达式 ($a) 的结果(当然是 $a 的值)。
(Source)
【讨论】:
【参考方案4】:是的。如果使用括号,它将成为PHP必须首先解决的表达式,这浪费了几个CPU周期。此外,您不能使用return($var);
通过引用返回,只能使用return $var;
这一切都在the manual中明确说明。
【讨论】:
【参考方案5】:这是一种语言结构,而不是函数,因此两者的工作方式几乎相同。有两个区别。引用php.net:
如果没有提供参数,那么 必须省略括号并且为 NULL 将被退回。调用return() 带括号但不带参数 会导致解析错误。
和
你不应该使用括号 围绕你的返回变量时 通过引用返回,因为这将 不行。你只能返回 引用变量,而不是结果 的一份声明。如果您使用返回 ($a);那么你不会返回 变量,但结果 表达式 ($a) (当然, $a) 的值。
来源:php.net
【讨论】:
【参考方案6】:我唯一使用括号的时候是用一个数组返回两个值。
return array($val,$valb);
此示例与您最初的问题不同,但这是我认为需要括号的唯一示例。
【讨论】:
我只使用它们来确定一个快速的返回值:return ($var ? 'yep' : 'no');
但大多数时候我放弃了括号'以上是关于PHP 返回(值); vs 返回值;的主要内容,如果未能解决你的问题,请参考以下文章