最快的 PHP 相当于 javascript 'var a = var1||var2||var3;' 表达式

2022-08-30 21:05:18

首先,这个表达式有名称吗?

Javascript

var value = false || 0 || '' || !1 || 'string' || 'wont get this far';

value等于(字符串)又名第五个选项string

菲律宾比索

$value = false || 0 || '' || !1 || 'string' || 'wont get this far';

$value等于 (布尔)true

我是否正确地认为,通过嵌套三元运算符来获得与JavaScript相同的结果的正确方法?什么是最好的解决方案?


答案 1

PHP 中的等价运算符是 ,它是没有中间部分的三元运算符?:

$value = false ?: 0 ?: '' ?: !1 ?: 'string' ?: 'wont get this far';

$a ?: $b是 的简写。$a ? $a : $b


答案 2

如果您使用的是 PHP 5.3 或更高版本,请参阅 deceze 的答案

其他明智的做法是,您可以使用嵌套的常规三元运算符。

$value = ( false ? false : ( 0 ? 0 : ( '' ? '' : ( !1 ? !1 : ( 'string' ? 'string' : ( 'wont get this far' ? 'wont get this far' : null )))))); 

哇,这太丑了。

您可以改用值数组;

$array = array(false,0,'',!1,'string','wont get this far'));

现在创建一个函数,该函数循环访问数组并返回第一个 true 值。

function array_short_circuit_eval($vars = array()){
    foreach ($vars as $var)if($var)return $var;return null;
}

$value = array_short_circuit_eval($array);

echo $value; // string