Parfois, on oublie que certaines fonctions PHP très utiles existent…
Pour un dossier en cours, j’ai mis en place un filtre avec différentes boites de sélection : par langue, âge, ville, etc. Comme je ne peux pas faire une seule requête globale pour récupérer le résultat, je suis contraint d’effectuer une requête par filtre utilisé et de calculer l’intersection des tableaux de résultat grâce à la fonction PHP array_intersect(); Cette dernière accepte un nombre variable de paramètres, ce qui est très pratique ici, car j’ai plusieurs tableaux à comparer. Le problème, cependant, est que je ne sais pas à l’avance combien de variables je vais lui passer, car je ne sais pas si l’utilisateur va utiliser 1, 2, 3, 4 ou 5 filtres à la fois.
Après m’être arraché les cheveux quelques minutes, je suis allé demander assistance à mon ami Google et je suis tombé sur LA solution toute simple, utilisant une fonction basique dont j’avais totalement oublié l’existence à force de ne l’avoir jamais utilisée :
$wrkArray = array( $userArray1,
$userArray2,
$userArray3
);
$result = call_user_func_array('array_intersect',$wrkArray);
Plus qu’à mettre en place les conditions nécessaires pour remplir le tableau $wrkArray et roulez jeunesse !