1

これらの変数が与えられた場合:

$bar = false;
$baz = false;
$boo = "hi there";
$jelek = false;

このように連鎖orすると:

$foo = $bar or
$foo = $baz or
$foo = $boo or
$foo = $jelek;

echo $foo;

返しますhi there!それで、これは正しい使用法orですか?もしそうなら、それはかなりセクシーだからです。

4

3 に答える 3

2

残念ながら、たとえば JavaScript でできることを PHP で行うことはできません。

var $foo = $bar || $baz || $boo;

ただし、使用できるのは連鎖三項演算子です。

$foo = $bar ? $bar : (
       $baz ? $baz : (
       $boo ? $boo : (
       NULL)));

変数名が繰り返されるため、あまり良くありませんが、チェーンは問題ありません。

$foo = $a ? $a : (
       $b ? $b : (
       $c ? $c : (
       $d ? $d : (
       $e ? $e : (
       $f ? $f : (
       NULL))))));

または、それらすべてをリスト内に詰め込んでループし、最初に見つかった真の値を取ります。

$foo = NULL;
foreach (array($bar, $baz, $boo) as $val) {
    if ($val) {
        $foo = $val;
        break;
    }
}

このオプションは、IMO で最も読みやすく、保守しやすく、理解しやすいオプションです。

于 2012-07-14T04:54:07.833 に答える
1

ブール値を返すだけorなので、この方法では使用できません。orネストされた 3 項演算子を使用してこれを行うことができます。あなたがリストした最初の方法よりも良い方法はないと思います。

于 2012-07-14T04:53:47.167 に答える
1

思い通りには使えませんor。しかし、あなたはすることができます:

$foo = $bar ? $bar : (!$baz ? $boo : $baz);
于 2012-07-14T04:56:03.673 に答える