Tengo una duda que hasta ahora me animo a preguntar. He visto desde hace tiempo que en javascript es posible hacer una asignación en base a una comparación booleana. Ejemplo:
Código:
Claro que bar y myvar deben estar definidas. Debido al comportamiento cortocircuito de la comprobación, foo obtendrá el valor de bar. Si bar es vacío ( '' / null / 0 / false ) entonces asignará myvar y si ésta está también vacía se asignará el último valor de la comparación booleana (en este caso false) que sería como un valor default si bar y myvar no tienen valor. En resumen, permite definir una serie de variables/valores de la cual el primero en no ser vacío se asignará a la variable.var foo = bar || myvar || false;
¿Cómo hago esto en PHP?
Si intentamos lo anterior en PHP, la operación de comparación booleana devuelve un booleano (como debería ser) y no el valor de la variable.
Teniendo $bar = '', $myvar = 0 y $default = 'foobar' en:
Código PHP:
$mivar = $bar || $myvar || $default;
Hay alguna alternativa PHP que sea igual de elegante?
Esto NO es elegante (a mi gusto):
Código PHP:
$foo = $bar?$bar:($myvar?$myvar:$default));
Código PHP:
$mivar = isset($mivar)&&$mivar?$mivar:$default;
Gracias!