Estou expandindo a resposta postada por Ethan Kent . Essa resposta descartará argumentos não nulos que são avaliados como falsos devido ao funcionamento interno do array_filter , que não é o que uma coalesce
função normalmente faz. Por exemplo:
echo 42 === coalesce(null, 0, 42) ? 'Oops' : 'Hooray';
Opa
Para superar isso, é necessário um segundo argumento e definição de função. A função solicitável é responsável por informar array_filter
se deve ou não adicionar o valor atual da matriz à 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'));
}
Seria bom se você pudesse simplesmente passar isset
ou 'isset'
como o segundo argumento para array_filter
, mas não teve essa sorte.
??
para PHP 7.