4

||インライン条件代入を実行できる 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 ハックを知っていますか?

4

2 に答える 2

3

PHP 5.3+では、これを行うことができます:

$test = $a ?: ($b ?: 'default value');
于 2013-05-12T08:10:53.293 に答える
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");
于 2013-05-12T08:16:56.670 に答える