PHP打印添加怪异的解释

PHP打印添加怪异的解释,php,Php,这与: 我想知道为什么 印刷品(99)+印刷品(99)+印刷品(99)+印刷品(99) 显示99100100100 我想了解PHP的怪癖。因为 打印 始终返回1 因为print()总是返回1。检查 这与不返回值的echo()不同 print()和echo()都不是实际的函数,而是语言结构。函数生成输出,然后(请参阅)返回值1。更复杂的是,print函数是一种不需要括号的语言构造(参见文档) 那么,如果你有这份声明 print(99) + print(99); 您实际看到的是打印99,从最右边

这与:

我想知道为什么

印刷品(99)+印刷品(99)+印刷品(99)+印刷品(99)

显示99100100100

我想了解PHP的怪癖。

因为

打印

始终返回1

因为
print()
总是返回1。检查
这与不返回值的echo()不同


print()
echo()
都不是实际的函数,而是语言结构。

函数生成输出,然后(请参阅)返回值1。更复杂的是,
print
函数是一种不需要括号的语言构造(参见文档)

那么,如果你有这份声明

print(99) + print(99);

您实际看到的是打印99,从最右边的
print
,然后是
print(99)+1的结果由于语言结构,与
print99+1相同或<代码>打印(99+1)

打印不是一项功能,因此
Print(99)
print99
相同。为了清楚起见,我们可以去掉括号

print 99 + print 99 + print 99 + print 99;
表达式从右侧求值,因此变为

print (99 + print (99 + print (99 + print 99)));
最右边的
print
首先执行,打印“99”并计算为1

输出:

99
99100
有待评估的代码:

print (99 + print (99 + print (99 + 1)));
print (99 + print (99 + 1));
同样,执行最右边的打印,它打印99+1(“100”)并计算为1

输出:

99
99100
有待评估的代码:

print (99 + print (99 + print (99 + 1)));
print (99 + print (99 + 1));

…等等。

解释与副本相同。您的链接问题已经包含了一些很好的解释。还有什么不清楚的?我读了另一个帖子,但我仍然不明白我问的问题是怎么回事(打印(99)+打印(99)+打印(99)…顺便说一句,打印(2)+3=打印(2+3)。。。。但我不知道print(99)是如何得到1的。我原以为第一个是100,但它是99…如果你用四个不同的数字,你会看到更好的顺序。实际上,
print
根本不是一个真正的函数。它是一种语言结构,就像
echo
。它甚至在文档的第一句中这样说……手册上说“
print
实际上不是一个真正的函数(它是一种语言结构)”。+1比我的答案解释得更好。