回声和打印声明

时间:2013-04-29 13:40:31

标签: php

假设以下代码:

<?php
echo 'hello' . print 123;

已执行。

我期望的是hello123,但实际输出为123hello1

为什么123先来?为什么输出结尾包含1

(我还尝试在hello周围加上一对括号,但结果仍然相同。)

4 个答案:

答案 0 :(得分:11)

echo 'hello' . print 123;

这会将'hello'print 123返回值连接起来。在print 返回1之前,输出 123。之后由hello1连接echo 输出。所以评估是:

  1. 输出123
  2. return 1
  3. 连接'hello'1
  4. 输出hello1

答案 1 :(得分:2)

Documentation明确表示,print函数将始终返回1。

所以这就是它。

执行打印功能 - &gt;输出123 - &gt;返回1 - &gt;与hello联系。

答案 2 :(得分:1)

print的返回值始终为 1

您的代码有一个连接点字符:

'hello' . print 123;

所以在连接之前评估所有部分:

  • '你好'是'你好'
  • print 123:在屏幕上显示“123”,并返回1

然后echo显示评估的字符串:

echo 'hello'.'1' // '1' is the return value of print

字符串上打印的最后一个字符串是123hello1

答案 3 :(得分:0)

为什么123先出现? 可能是因为首先执行了print语句并打印了&#39; 123&#39;正如它应该。

为什么输出结尾包含1? 因为&#39; print&#39;返回1,你的echo语句回显&#39; 1&#39;