Estoy ampliando la respuesta publicada por Ethan Kent . Esa respuesta descartará los argumentos no nulos que se evalúan como falsos debido al funcionamiento interno de array_filter , que no es lo que coalesce
normalmente hace una función. Por ejemplo:
echo 42 === coalesce(null, 0, 42) ? 'Oops' : 'Hooray';
Ups
Para superar esto, se requiere un segundo argumento y una definición de función. La función invocable es responsable de decir array_filter
si se agrega o no el valor de matriz actual a la matriz de resultados:
// "callable"
function not_null($i){
return !is_null($i); // strictly non-null, 'isset' possibly not as much
}
function coalesce(){
// pass callable to array_filter
return array_shift(array_filter(func_get_args(), 'not_null'));
}
Sería bueno si pudieras simplemente pasar isset
o 'isset'
como el segundo argumento array_filter
, pero no tanta suerte.
??
para PHP 7.