これらの変数が与えられた場合:
$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
ですか?もしそうなら、それはかなりセクシーだからです。
これらの変数が与えられた場合:
$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
ですか?もしそうなら、それはかなりセクシーだからです。
残念ながら、たとえば 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 で最も読みやすく、保守しやすく、理解しやすいオプションです。
ブール値を返すだけor
なので、この方法では使用できません。or
ネストされた 3 項演算子を使用してこれを行うことができます。あなたがリストした最初の方法よりも良い方法はないと思います。
思い通りには使えませんor
。しかし、あなたはすることができます:
$foo = $bar ? $bar : (!$baz ? $boo : $baz);