Javascript 使用合取和析取运算符。
如果左操作数可以计算为: false(在合取 (a && b) 的情况下)或 true(在析取 (a || b) 的情况下),则返回左操作数;否则返回右操作数。
PHP 中是否存在等效的运算符?
最佳答案
PHP 支持短路求值,与 JavaScript 的连词略有不同。我们经常看到使用短路评估来测试 PHP 中 MySQL 查询结果的示例(即使这不是一个好的做法):
// mysql_query() returns false, so the OR condition (die()) is executed.
$result = mysql_query("some faulty query") || die("Error");
请注意,在 PHP 中,当 bool 运算符两侧都有要计算的表达式时,短路计算会起作用,这会产生返回值。然后,仅当左侧为 false 时,它才执行右侧。这与 JavaScript 不同:
简单地做:
$a || $b
如果其中一个为真或两者都为假,则返回 bool 值TRUE
或FALSE
。如果$a
为假,它不会返回$b
的值:
$a = FALSE;
$b = "I'm b";
echo $a || $b;
// Prints "1", not "I'm b"
因此,为了回答这个问题,PHP 将对两个值进行 bool 比较并返回结果。它不会返回两者中的第一个真值。
在 PHP 中更惯用的方式(如果有惯用 PHP 之类的东西的话)是使用三元运算:
$c = $a ? $a : $b;
// PHP 5.3 and later supports
$c = $a ?: $b;
echo $a ?: $b;
// "I'm b"
PHP 7 更新
PHP 7 引入 the ??
null coalescing operator它可以作为更接近合相的近似值。它特别有用,因为它不需要您检查左操作数的数组键上的 isset()
。
$a = null;
$b = 123;
$c = $a ?? $b;
// $c is 123;
关于php - PHP 本身支持合取和析取吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10029360/