Javascript使用连接和析取运算符.
如果它可以被计算为:false,则返回左操作数:在结合(a && b)的情况下为false,或者在析取(a || b)的情况下为true; 否则返回右操作数.
PHP中是否存在等效运算符?
Mic*_*ski 10
PHP支持短路评估,与JavaScript的结合略有不同.我们经常看到使用短路评估来测试PHP中MySQL查询结果的示例(即使不是很好的做法):
// mysql_query() returns false, so the OR condition (die()) is executed.
$result = mysql_query("some faulty query") || die("Error");
Run Code Online (Sandbox Code Playgroud)
请注意,当在PHP中存在要在布尔运算符的任一侧进行求值的表达式时,短路评估将起作用,这将产生返回值.然后只有在左侧为假时才执行右侧.这与JavaScript不同:
简单地做:
$a || $b
Run Code Online (Sandbox Code Playgroud)
将返回一个布尔值,TRUE或者FALSE如果其中任何一个是真的或两者都是假的.它不会返回$bif $a为falsy 的值:
$a = FALSE;
$b = "I'm b";
echo $a || $b;
// Prints "1", not "I'm b"
Run Code Online (Sandbox Code Playgroud)
因此,为了回答这个问题,PHP将对这两个值进行布尔比较并返回结果.它不会返回两者的第一个真值.
在PHP中更具惯用性(如果存在惯用的PHP这样的东西)将使用三元操作:
$c = $a ? $a : $b;
// PHP 5.3 and later supports
$c = $a ?: $b;
echo $a ?: $b;
// "I'm b"
Run Code Online (Sandbox Code Playgroud)
PHP 7引入了??空合并运算符,它可以作为更接近于连词的近似值.它特别有用,因为它不需要您检查isset()左操作数的数组键.
$a = null;
$b = 123;
$c = $a ?? $b;
// $c is 123;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |