使用'和'的PHP三元语句

Zap*_*ree 5 php

好的,我刚刚意识到PHP的一些奇怪的行为,并想知道为什么会发生这种情况.所以运行这段代码:

 var_dump( true and false ? 'one' : 'two' );
Run Code Online (Sandbox Code Playgroud)

输出

boolean true
Run Code Online (Sandbox Code Playgroud)

而不是你想象中的'两个'......问题似乎是使用'和'.

运行:

var_dump( true && false ? 'one' : 'two' );
Run Code Online (Sandbox Code Playgroud)

输出

string 'two' (length=3)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样.为什么使用'和'代替'&&'导致这种奇怪的行为?他们不应该是一样的吗?

rid*_*rid 5

这是因为?:具有较高的优先级and,但比低&&.