PHP打印添加怪异的解释

Luk*_*nke 0 php

这与以下内容有关: 为什么"回显'2'.打印(2)+ 3"打印521?

我想知道为什么

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

显示99100100100 ....

我想了解PHP的怪癖.

JJJ*_*JJJ 6

打印不是一个功能,所以print(99)是相同的print 99.为清楚起见,我们可以删除括号.

print 99 + print 99 + print 99 + print 99;
Run Code Online (Sandbox Code Playgroud)

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

print (99 + print (99 + print (99 + print 99)));
Run Code Online (Sandbox Code Playgroud)

最右边print首先执行,打印"99"并评估为1.

输出:

99
Run Code Online (Sandbox Code Playgroud)

待评估的代码:

print (99 + print (99 + print (99 + 1)));
Run Code Online (Sandbox Code Playgroud)

同样,执行最右边的打印并打印99 + 1("100")并评估为1.

输出:

99100
Run Code Online (Sandbox Code Playgroud)

待评估的代码:

print (99 + print (99 + 1));
Run Code Online (Sandbox Code Playgroud)

...等等.