“?:”和“||”有什么区别?

7
?: 条件运算符和逻辑 OR (||) 有什么区别?
我发现我的代码能用:
$screenpixelratio = !empty($_COOKIE['screenpixelratio']) || $_COOKIE['screenpixelratio'] || $fallback_pixelratio;

但不包括:

$screenpixelratio = !empty($_COOKIE['screenpixelratio']) ? $_COOKIE['screenpixelratio'] : $fallback_pixelratio;

有人能解释一下为什么一个可以工作,而另一个不能工作吗?

1
一个(称为三元运算符)相当于简化的“if测试”的等价物;另一个是逻辑上的“或” - 这是非常重要的区别,它们完全做不同的事情。 - Mark Baker
第二个例子是一个三元运算符。第一个例子将遇到的第一个真值分配给$screenpixelration - BenM
2
我要成为“那个人”:)。 ?:是一个三元运算符,而不是三元运算符(三元运算符是一类运算符)。它的具体名称是条件运算符。 http://en.wikipedia.org/wiki/Ternary_operator 是该类别。在该页面上查看“另请参阅”,以获取条件运算符(链接无法工作,因为URL中有:)。 - ajp15243
2个回答

18
第一个条件(逻辑或)是在表明...
this or this or this

另一种(三元操作符)的意思是:

if this then this otherwise that

8

|| 二元运算符是处理两个参数的运算符。

它会首先检查条件是否为真,如果是真,则不会进行进一步检查,否则会继续检查。

?: 三元运算符是一种接受三个参数的运算符。这些参数和结果可以是不同的类型。

Expression1 ? Expression2 : Expression3;

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接