函数总是在echo期间首先执行?

时间:2015-06-27 09:57:32

标签: php

为什么我可以通过调用echo一次来输出hello Sam来编写此代码?

这是PHP代码:

<?php  

    function moo() {
        echo 'Sam';
    }

    echo 'hello ' . moo();

?>

输出为Samhello 解析是R to L。我可以通过将echo写在两个单独的行上来实现所需的输出:

<?php  

    function moo() {
        echo 'Sam';
    }

    echo 'hello ';
    echo moo();

?>

但是有没有办法在一行中做到这一点?

1 个答案:

答案 0 :(得分:5)

不要使用函数echo,只需返回要打印的字符串即可。然后让调用者决定如何处理它 - 在这种情况下,function moo() { return 'Sam'; } echo 'hello ' . moo(); 它:

echo number_format(get_something_from_database_which_is_a_number());

编辑:添加解释(不是答案的作者)而不是留下评论。

“return”和内联concat之间的区别在于,要使初始函数(echo语句)起作用,它需要在输出初始函数之前运行函数(在代码中,它是moo())回声。

这与以下示例没有什么不同:

get_something_from_database_which_is_a_number()

您希望函数number_format()返回return函数之前的值,然后很好地格式化它。

如果使用return语句,函数本身将运行,但随后{{1}}将字符串返回到初始函数调用(在您的情况下为echo)语句。