2013-10-16 51 views
0
<?php 
function dosomething(){ 
    echo "do\n"; 
} 

$temp="test".dosomething(); 
echo $temp; 
?> 

预期的结果连接操作符:testdoPHP当操作数是一个功能

,但实际的结果是: 做

测试%

我知道如何更改代码,以获得预期结果。 但我怀疑是为什么代码打印这样的结果。 有人可以解释它吗?谢谢!

回答

3

dosomething回显屏幕。由于这首先运行“do \ n”被打印。

dosomething也使第二回声相当于echo "test";

为了使用调用的结果,你应该回到它不返回任何东西:

function dosomething(){ 
    return "do\n"; 
} 

按预期这将表现。

澄清。为了弄清楚什么$temp是必须首先运行的功能,首先打印出“do \ n”。

1

使用返回。

function dosomething(){ 
return "do\n"; } 
+0

OP想:我知道如何更改代码即可获得预期的结果。但是我怀疑为什么代码会打印这样的结果。有人可以解释吗? – Adam

1

使用,而不是附和

function dosomething(){ 
    return "do\n"; 
} 
+0

OP想要: 我知道如何更改代码以获得预期结果。但是我怀疑为什么代码会打印这样的结果。有人可以解释吗? – Adam

+0

我猜是因为你的函数是先执行的,所以它打印出来,然后打印var $ temp,它包含test和由%表示的函数的连接。你不同意? – guikk

0

return语句我不知道为什么人们越来越下降投票。他们的答案是对的。

http://codepad.org/nagGXY99

+0

仔细阅读OP的要求: OP想要:我知道如何更改代码以获得预期结果。但是我怀疑为什么代码会打印这样的结果。有人可以解释吗? – Adam

+0

啊, 引号内没有空格。 \ n不会在浏览器中呈现。  将会但\ n或\ r或\ r \ n将渲染出来的唯一东西是在PHP为其生成内容的电子邮件和其他文档中。 例如$ foo ='something';会返回“某物”,其中$ foo ='something'...反正你懂这个意思。您也可以在其中包含 ,但我会建议您不要这样做,除非您直接将内容发布到浏览器。 – Sparatan117

0

试试这个:在调用功能

使用的回报。这样做会得到函数被调用的字符串。所以函数被字符串替换,然后2个字符串会被替换。

-

感谢