这与: 为什么 "echo '2' . print(2) + 3" 打印 521?
我想知道为什么
打印(99)+打印(99)+打印(99)+打印(99);
显示 99100100100....
我想了解PHP的怪癖。
这与: 为什么 "echo '2' . print(2) + 3" 打印 521?
我想知道为什么
打印(99)+打印(99)+打印(99)+打印(99);
显示 99100100100....
我想了解PHP的怪癖。
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));
...等等。
该print
函数产生输出,然后(参见文档)返回值 1。更复杂的是,该print
函数是一种不需要括号的语言结构(参见文档)。
所以,如果你有声明
print(99) + print(99);
您实际看到的是从最右边开始打印 99,print
然后print(99) + 1;
由于语言结构,其结果与print 99 + 1;
or相同print (99 + 1);
。
因为print()
总是返回 1。检查php 手册
这与不返回值的 echo() 不同。
两者print()
和echo()
都不是实际功能,而是语言结构。