いくつかのネストされた三項演算子を使用することはどうですか?
私にとっては、あなたの問題に対処する最も簡単な方法です。ネストされた三項演算子を使うことができるので、必要に応じてチェックを追加することができます。
$var = isset($var) ? $var : ($i=check1()) ? $i : ($i=check2()) ? $i : "default" ;
それはほとんど同じコードの量だと、私はあなたを誤解していない限り、それは...動作するはずです。それが事実なら、私は残念です。
:あなたは、コメントでそれを持っているので、ここでは、
$result = null; $result ||= check1(); $result ||= check2(); $result ||= "default";
- vs -
$var = isset($var) ? $var : ($i=check1()) ? $i : ($i=check2()) ? $i : "default" ;
ネストされた三項演算子は少し混乱することができます:あなたは一例として掲載元のコードと比較して
は、長さがほぼ同じです
// Is $var set?
$var = isset($var) ?
// TRUE: It is, use $var
$var :
// FALSE: $var is not set, run check1
($i=check1()) ?
// TRUE: the function check1 returned valid data
$i :
// FALSE: the function check1 returned null or false, run check2
($i=check2()) ?
// TRUE: the function check2 returned valid data
$i :
// FALSE: the function check1 returned null or false, set default value
"default" ;
$ a = isset($ a)? $ a:$ b;最初のコードサンプルの略語です – niteria
$ a = 0; $ a = $ a || 5; echo $ a; // boolean TRUE – eyelidlessness
奇妙なことに... echo $ a == 5? '正誤'; // true - but - echo $ a - 1; // 0 – eyelidlessness