为了模拟 JavaScript 在类似以下表达式的语句中分配第一个非假值的的方式
var v = a || b || c || d;
我编写了一个小的辅助方法,并将其放在一个函数转储库中(此处以裸函数形式呈现)
<?php
function either($a, $b){
$val = $a ? $a : $b;
$args = func_get_args();
if($val === false && count($args) > 2){
$args = array_slice($args, 2);
foreach($args as $arg){
if($arg !== false){
$val = $arg;
break;
}
}
}
return $val;
}
?>
现在,不用写
$v = $a ? $a : $b;
我可以写
$v = either($a, $b);
但更重要的是,不用写
$v = $a ? $a : ($b ? $b : $c);
我可以写
$v = either($a, $b, $c);
或者实际上
$v = either($a, $b, $c, $d, $e, $f, $g, $h);