我非常喜欢JavaScript中的||
运算符,我们可以在其中进行内联条件赋值。
var a = 0;
var b = 42;
var test = a || b || 'default value';
console.log(test); // 42
这一点很清楚,不要占用太多行。
在PHP中,这个逻辑运算符返回布尔值:
$a = 0;
$b = 42;
$test = $a || $b || 'default value';
print_r($test); // bool(true)
当然,我们可以使用ternaries进行内联分配:
$test = $a ? $a : $b ? $b : 'default';
print_r($test); // int(42)
但这使得代码含糊不清,这不是 易于阅读。
所以我的问题来了:
你知道一个不错的PHP黑客进行内联条件分配吗?
答案 0 :(得分:3)
在PHP 5.3+ you can do this中:
$test = $a ?: ($b ?: 'default value');
答案 1 :(得分:1)
只要您不需要短路副作用,这将起作用:
function either_or() {
$nargs = func_num_args();
if ($nargs == 0) {
return false;
}
$args = func_get_args();
for ($i = 0; $i < $nargs-1; $i++) {
if ($args[$i]) {
return $args[$i];
}
}
return $args[$nargs-1];
}
$test = either_or($a, $b, "Default value");