Médiaforma

PHP MySQL – Filtrer un tableau

Print Friendly

Supposons que vous récupériez de nombreuses données dans un tableau. Certaines de ces données sont peut-être erronées ou ne présentent aucun intérêt pour vous. Vous pouvez les filtrer en utilisant la fonction array_filter() :

array_filter($tableau, fonction);

où tableau est le tableau à filtrer et fonction est une chaîne qui représente le nom d’une fonction appliquée à chaque élément du tableau. Si la valeur retournée par la fonction est true, l’élément est retenu. Dans le cas contraire, l’élément n’est pas retenu.

Exemple sur un tableau numéroté

<?php
  function afficheImpair($data){
    return ($data & 1);
}

  $tableau = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
  $tableau_filtre = array_filter($tableau,"afficheImpair");
  foreach($tableau_filtre as $element)
    echo $element."<br>";
?>

Remarque

La fonction afficheImpair() doit retourner une valeur égale à true pour les nombres impairs et à false pour les nombres pairs. En effectuant un ET logique entre l’élément du tableau et 1 ($data & 1), c’est bien ce qui est retourné par la fonction.

Prenons le nombre impair 15. Sa version binaire est 00001111. Si nous effectuons un ET logique avec 00000001, le résultat est différent de 0, et donc égal à true. Prenons le nombre pair 12. Sa version binaire est 00001100. Si nous effectuons un ET logique avec 00000001, le résultat est nul, et donc égal à false. Il est facile d’étendre ce raisonnement à tous les nombres pairs et impairs.

Exemple sur un tableau associatif

Le principe est le même, mais ici, le tableau est filtré sur les valeurs des couples clé=>valeur :

<?php
  function afficheImpair($data){
    return ($data & 1);
}

  $tableau = array("un"=>1, "deux"=>2, "trois"=>3, "quatre"=>4, "cinq"=>5);
  $tableau_filtre = array_filter($tableau,"afficheImpair");
  foreach($tableau_filtre as $cle=>$valeur)
    echo $cle."<br>";
?>

Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply