当我执行代码:echo 'a' . print('2') . 'c';
时,我得到2ca1
.
我可以计算出print('2')
写下2,echo print('1')
就会打印1
但为什么字母"c"是在打印声明之后而不是在结尾写下的?
我本来以为会看到"2a1 c".
当我执行代码:echo 'a' . print('2') . 'c';
时,我得到2ca1
.
我可以计算出print('2')
写下2,echo print('1')
就会打印1
但为什么字母"c"是在打印声明之后而不是在结尾写下的?
我本来以为会看到"2a1 c".
print
实际上并不是一个函数,而是一个语言 struct .
用括号包围要打印的参数不会引发语法错误,并且会产生看起来像正常函数调用的语法.然而,这可能会产生误导,因为the parentheses are actually part of the expression being output, not part of the print syntax itself.
如果('2')
只是这里的一个表达,那么这意味着它基本上与print '2' . 'c'
相同-所以首先发生级联,然后打印结果.
然后返回值print
(始终是1
)被级联到a
,然后echo
导致后者a1
被写入已打印的2c
之后的输出缓冲区.