0

这与: 为什么 "echo '2' . print(2) + 3" 打印 521?

我想知道为什么

打印(99)+打印(99)+打印(99)+打印(99);

显示 99100100100....

我想了解PHP的怪癖。

4

4 回答 4

6

Print 不是函数,因此print(99)print 99. 为了清楚起见,我们可以去掉括号。

print 99 + print 99 + print 99 + print 99;

表达式是从右边计算的,所以它变成

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

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

输出:

99

待评估的代码:

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

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

输出:

99100

待评估的代码:

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

...等等。

于 2013-08-03T10:33:36.273 回答
3

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

所以,如果你有声明

print(99) + print(99);

您实际看到的是从最右边开始打印 99,print然后print(99) + 1;由于语言结构,其结果与print 99 + 1;or相同print (99 + 1);

于 2013-08-03T10:31:36.880 回答
1

因为,从文档中,

print…</p>

返回1,总是

于 2013-08-03T10:29:08.943 回答
1

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

两者print()echo()都不是实际功能,而是语言结构。

于 2013-08-03T10:30:31.137 回答