2014-07-08 36 views
0

我想输出2个变量设置为函数内的参数。返回一个不带引号的变量在php

function aboutMe($somenam="rahul", $someplace="delhi") 
    {return "$somenam $someplace";} 
    echo "<br/>",aboutMe(); 
    echo "<br/>",aboutme("sachin"); 

我只是想知道为什么,如果我使用return $somenam $someplace;抛出一个错误,而其输出正确,如果我使用return "$somenam $someplace";。为什么是必要的引号,因为在下面的代码,也没有报价返回后,是工作正常:

function func_having_static_var($x = NULL) 
    { 
$var = 0; 
    if ($x === NULL) 
    { return $var; } 
    // $var = $x; 
    } 
    echo func_having_static_var(); 
+0

什么错误?该代码是有效的。演示http://codepad.viper-7.com/y5EJfA – Deele

+1

'return“$ somenam $ someplace”;'与'return $ somename相同。 ''。 $某处;'。引号是需要的,因为没有它们,'return $ somename $ someplace;'只是一个语法错误。你总是可以返回一个数组,例如'return [$ somenam,$ someplace];'。您可以阅读双引号字符串中出现的[variable expansion](http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing)。 –

回答

1

您只能从该函数返回一个值。所以,你需要使用.运营商不concate两个变量,如果你不想用引号把它们结合在一起,

return $somenam." ".$someplace; 
+1

这不是他问的? –

+0

不回答或解释OP询问的问题。 – Deele

+0

可能是,但至少没有不正确的得到downvote。 – Rikesh

4

其所需要的报价,其是return只能返回一两件事。

当您输入"$somenam $someplace"时,您正在创建一个字符串对象并将其返回。如果你做了return $somenam." ".$someplace;(它仍然是一个对象),你可以做同样的事情。

return $somenam $someplace;是无效的语法,因为您正在返回两个对象。

return只需要一个变量(要返回的值),这就是为什么return $var有效。

查看documentation on returning values了解更多信息。