Возврат PHP (значение); против возвращаемого значения; - PullRequest
18 голосов
/ 27 мая 2010

Есть ли разница между return($var); и return $var; иными, чем заключать их в скобки?

Ответы [ 6 ]

32 голосов
/ 27 мая 2010

Если вы не вернетесь по ссылке , они означают одно и то же. Предпочтительно исключить скобки. От документы :

Примечание. Обратите внимание: поскольку return() является языковой конструкцией, а не функцией, круглые скобки, окружающие ее аргументы, не требуются. Обычно их опускают, и вам действительно следует это делать, поскольку в этом случае PHP выполняет меньше работы.

Примечание. Никогда не используйте скобки вокруг возвращаемой переменной при возврате по ссылке, так как это не сработает. Вы можете возвращать переменные только по ссылке, а не по результату оператора. Если вы используете return ($a); тогда вы возвращаете не переменную, а результат выражения ($a) (которое, конечно, является значением $a).

4 голосов
/ 27 мая 2010

Из Руководства PHP :

"Вы никогда не должны использовать скобки вокруг возвращаемой переменной при возврате по ссылке, так как это не сработает. Вы можете возвращать переменные только по ссылке, а не по результату оператора. Если вы используете return ($ a); вы возвращаете не переменную, а результат выражения ($ a) (которое, конечно, равно значению $ a). "

Edit: Это означает, что есть разница между return($var) и return $var. В частности, первый вернет значение $var, а второй сам вернет $var.

3 голосов
/ 27 мая 2010

Обратите внимание, что поскольку return () является языковой конструкцией, а не функцией, скобки вокруг ее аргументов не требуются. Обычно их опускают, и вам действительно следует это делать, поскольку PHP в этом случае выполняет меньше работы.

Вы не должны никогда не использовать скобки вокруг возвращаемой переменной при возврате по ссылке , так как это не будет работать. Вы можете возвращать переменные только по ссылке, а не по результату оператора. Если вы используете return ($ a); тогда вы возвращаете не переменную, а результат выражения ($ a) (которое, конечно, равно значению $ a).

( Источник )

1 голос
/ 27 мая 2010

Я использую круглые скобки только при возврате двух значений с массивом.

return array($val,$valb);

Этот пример отличается от вашего первоначального вопроса, однако это единственный случай, когда я думаю, что скобки обязательны.

1 голос
/ 27 мая 2010

Это языковая конструкция, а не функция, поэтому оба работают почти одинаково Есть два отличия. Цитата php.net:

Если параметр не указан, то круглые скобки должны быть опущены и NULL будет возвращен. Обратный звонок () с круглыми скобками, но без аргументов приведет к ошибке разбора.

и

Вы никогда не должны использовать скобки вокруг вашей возвращаемой переменной, когда возвращаясь по ссылке, так как это будет не работа. Вы можете только вернуться переменные по ссылке, а не результат из заявления. Если вы используете возврат ($ А); тогда вы не вернете переменная, но результат выражение ($ а) (что, конечно, значение $ а).

Источник: php.net

1 голос
/ 27 мая 2010

Да. Если вы используете круглые скобки, это станет выражением, которое PHP должен будет решить в первую очередь, что является пустой тратой нескольких циклов ЦП. Кроме того, вы не можете вернуться по ссылке, используя return($var);, только используя return $var;

Все это четко указано в руководстве .

...