array_filter pour les champs vides, sauf "0"

Default
,

Bonjour,

J'envoie un tableau à une méthode pour enregistrement des données qu'il contient.
Avant de l'enregistrer je supprime dans celui-ci toutes les données vides avec un array_filter().

Seul problème, j'ai un champs caché qui contient soit 1, soit 0. Et du coup dans le cas où il vaut 0 le array_filter() le supprime du tableau.
J'ai testé avec un array_filter avec une fonction pour retourner ce qu'il faut mais je ne dois pas faire ce qu'il faut car ça ne fonctionne pas...

Bref, je suis preneur d'un array_filter() permettant de garder les champs égaux à '0'.

Merci! :)

EDIT>

J'ai continué mes recherches et ceci à l'air de fonctionner:

$data = array_filter($data, function ($k) {
            return (!empty($k) || $k === 0 || $k === '0');
        });

Mais il existe peut-être quelque chose de mieux/plus propre?

EDIT2> Encore après quelques recherches, cette solution me paraît pas mal:

$data = array_filter($data, function ($k) {
            return '' !== $k;
        });