PHP 中是否有返回最左侧值的短路 OR?
在某些语言中,您可以
$a = $b OR $c OR die("no value");
也就是说,OR将短路,仅从左到右评估值,直到找到真实值。但除此之外,它还返回已计算的实际值,而不仅仅是 。true
在上面的示例中,在 PHP 中,如果任一或是非假值,则为值,否则它将是 。$a
1
$a
$b
die
所以写了一个函数,要用作first
$a = first($a, $b, die("no value"));
返回 或 的值。但是,它不会短路 - 它将永远 。$a
$b
die
PHP 中是否有返回实际值的短路 OR
?
编辑:对于我给出的例子,有一些很好的答案,但我想我的例子并不完全是我的意思。让我澄清一下。
$a = func1() OR func2() OR func3();
其中每个函数都执行非常非常密集的计算,因此我最多只想计算每个表达式一次。对于第一个返回真值,我希望将实际值存储在 .$a
我认为我们可以排除编写函数的可能性,因为它不会短路。条件运算符答案将计算每个表达式两次。