¿Qué le parece usar un par de operadores ternarios anidados?
Para mí es la forma más fácil de resolver su problema. Y como puede usar operadores ternarios anidados, debería poder agregar más controles si es necesario.
$var = isset($var) ? $var : ($i=check1()) ? $i : ($i=check2()) ? $i : "default" ;
Es casi la misma cantidad de código y debería funcionar ... a menos que te haya entendido mal. Si ese es el caso, lo siento.
En comparación con el código original informados a medida ejemplo, la longitud es casi lo mismo:
$result = null; $result ||= check1(); $result ||= check2(); $result ||= "default";
- vs -
$var = isset($var) ? $var : ($i=check1()) ? $i : ($i=check2()) ? $i : "default" ;
operadores ternarios anidados pueden ser un poco confuso, así que aquí lo tienes con los comentarios:
// 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; es una abreviatura de la primera muestra de código – niteria
$ a = 0; $ a = $ a || 5; echo $ a; // booleano TRUE – eyelidlessness
Curiosamente ... echo $ a == 5? 'verdadero Falso'; // true - pero - echo $ a - 1; // 0 – eyelidlessness