下面是奇怪的,我没有得到
if (print("foo") || print("bar")) {
// "foo" has been printed.
}
Run Code Online (Sandbox Code Playgroud)
为什么输出1?
可以解释一下吗?
这是因为PHP是一种荒谬的语言.print它不是一个正常的函数,它是一种语言结构.该行实际上被解析为:
if (print (("foo") || print("bar")))
Run Code Online (Sandbox Code Playgroud)
并且("foo") || print("bar")是一个评估为的表达式1."foo"布尔上下文中的字符串为true,因此||运算符会产生1.
如果您明确地将表达式括起来的方式是人们期望它被解析的方式:
if ((print("foo")) || (print("bar")))
Run Code Online (Sandbox Code Playgroud)
然后输出就是你所期望的:
foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |