0

假设以下代码:

<?php
echo 'hello' . print 123;

被执行。

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

为什么123排在第一位?为什么输出包含1在最后?

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

4

4 回答 4

11
echo 'hello' . print 123;

'hello'与 的返回值print 123连接。在print 返回值之前1,它会输出 123。连接后hello1输出echo。所以评价是:

  1. 输出123
  2. 返回1
  3. 连接'hello'1
  4. 输出hello1
于 2013-04-29T13:43:41.977 回答
2

文档清楚地表明,print函数将始终返回 1。

所以这里是怎么回事。

执行打印功能 -> 输出123-> 返回1-> 与hello.

于 2013-04-29T13:42:24.980 回答
1

print的返回值始终为1

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

'hello' . print 123;

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

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

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

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

打印在字符串上的最终字符串是123hello1.

于 2013-04-29T13:47:33.587 回答
0

为什么123排在第一位?
可能是因为 print 语句首先执行并按应有的方式打印 '123'。

为什么输出最后包含 1 ?
因为 'print' 返回 1,而您的 echo 语句回显了 '1'

于 2013-04-29T13:44:02.800 回答