PHP return(value); vs return value;

21

return($var);return $var; 除了用括号包裹变量以外,还有什么区别吗?

6个回答

35

除非你是通过引用返回值,否则它们的含义相同。最好省略括号。来自文档

注意:由于return()是语言结构而不是函数,因此不需要括号。通常将其省略,实际上应该这样做,因为在这种情况下PHP要做的工作更少。

注意:当通过引用返回值时,您不应在返回变量周围使用括号,因为这样不起作用。只能通过引用返回变量,而不能返回语句的结果。如果使用return ($a); 那么你返回的不是一个变量,而是表达式($a)的结果(当然,这是$a的值)。


少做一些工作总是更好的,谢谢。我猜这也适用于 echo 吗? - Josh K
1
@Josh K:是的(此外,使用逗号而不是连接运算符)。 - webbiedave
4
请注意,这也减轻了您那可怜的过度劳累的手指所承受的工作! - salathe
@Webbie:你的意思是什么?像这样 echo "Hello", $person->name, " !"; 吗? - Josh K

4
PHP手册

“返回引用时,不应该在返回变量周围加上括号,因为这样无法工作。您只能引用返回变量,而不能引用语句的结果。如果使用return ($a);那么你返回的不是一个变量,而是表达式($a)的结果(当然,这是$a的值)。"

编辑: 这意味着return($var)return $var之间存在差异。具体来说,前者将返回$var的值,而后者将返回$var本身。

3
注意,由于return()是一种语言结构而不是函数,所以其参数周围的括号不是必需的。通常情况下可以省略它们,实际上在这种情况下应该省略,因为这样PHP的工作量会更少。
当通过引用返回时,永远不要在返回变量周围使用圆括号,因为这不起作用。你只能通过引用返回变量,而不能返回一个语句的结果。如果使用return ($a);,那么你返回的不是变量,而是表达式($a)的结果(当然,这就是$a的值)。
来源

1

是的。如果您使用括号,它将变成PHP必须先解决的表达式,这是浪费了一些CPU周期。此外,您不能使用return($var);通过引用返回,只能使用return $var;

所有这些都在手册中清楚说明。


1

这是一种语言结构,而不是函数,因此两者的工作方式几乎相同。然而有两个区别。引用php.net:

如果没有提供参数,则必须省略括号并返回NULL。带有括号但没有参数调用return()将导致解析错误。

当通过引用返回时,永远不应该在返回变量周围使用括号,因为这样不起作用。您只能通过引用返回变量,而不能返回语句的结果。如果使用return($a);那么您返回的不是变量,而是表达式($a)的结果(当然,这是$a的值)。

来源:php.net


0
我只在使用数组返回两个值时才使用括号。
return array($val,$valb);

这个例子与您最初的问题不同,但这是我认为需要括号的唯一情况。


1
我只在需要快速返回值时使用它们:return ($var ? 'yep' : 'no'); 但大多数情况下我会省略括号。 - Zack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接