Recherche d’éléments dans un tableau
Php propose un certain nombre de fonctions utiles pour vérifier la présence d’éléments dans un tableau, récupérer des clés, rechercher le nombre d’occurrences d’éléments trouvés… Vous pouvez même tirer au hasard des valeurs dans un tableau.
Présence dans un tableau
Pour savoir si un élément se trouve dans un tableau, utilisez la fonction in_array() qui prend en premier paramètre la valeur à rechercher et en deuxième paramètre le tableau où effectuer la recherche.
<?php
$tab = array('daniel', 'boby','david');
if(in_array('david',$tab){
echo 'trouvé';
}else{
echo 'pas trouvé';
}
?>
Affichage
trouvé
Vous pouvez utiliser un troisième paramètre qui permet de faire une vérification de type. S’il vaut TRUE alors in_array() vérifiera aussi que le type de la valeur recherchée correspond au type de la valeur trouvée.
<?php
$tab = array(1, 2,'3');
if(in_array(3,$tab,true)){
echo 'trouvé<br>';
}else{
echo 'pas trouvé<br>';
}
$tab = array(1, 2,'3');
if(in_array(3,$tab,false)){
echo 'trouvé<br>';
}else{
echo 'pas trouvé<br>';
}
?>
Affichage
pas trouvé
trouvé
Si le troisième paramètre n’est pas précisé, la vérification de type ne se fera pas.
Rechercher la clé correspondante
La fonction in_array() vérifie la présence mais ne retourne aucune valeur. Pour cela, utilisez la fonction array_search() qui fonctionne comme in_array() mais qui retourne la clé de la valeur recherchée.
<?php
$tab = array('daniel', 'boby','david');
echo 'Clé : '.array_search('daniel',$tab);
?>
Affichage
Clé : 0
Si la valeur n’est pas trouvé, la fonction retourne le boolean false.
<?php
$tab = array('daniel', 'boby','david');
$pos = array_search('boby',$tab);
if($pos!==false){
echo 'trouvé en position '.$pos.'<br>';
}else{
echo 'pas trouvé<br>';
}
?>
Affichage
trouvé en position 1
Note : pour pouvoir bien tester une clé qui peut être nulle, utiliser l’opérateur !==
Rechercher le nombre d’occurences
Php peut retourner, sous forme d’un tableau associatif, le nombre d’occurences trouvés pour chaque valeur du tableau avec la fonction array_count_values().
<?php
$tab = array('daniel', 'boby','david','daniel', 'boby');
$occ = array_count_values($tab);
print_r($occ);
?>
Affichage
Array ( [daniel] => 2 [boby] => 2 [david] => 1 )
Si la valeur n’est pas trouvée, la fonction retourne le boolean false.
<?php
$tab = array('daniel', 'boby','david');
$o = array_search('boby',$tab);
if($pos!==false){
echo 'trouvé en position '.$pos.'<br>';
}else{
echo 'pas trouvé<br>';
}
?>
Affichage
trouvé en position 1
Note : pour pouvoir bien tester une clé qui peut être nulle, utiliser l’opérateur !==
Récupération aléatoire
Php peut tirer une ou plusieurs valeurs d’un tableau au hasard avec la fonction array_rand(). Le premier paramètre est le tableau source et le deuxième paramètre est le nombre d’éléments à retourner. La fonction renvoie les clés associées aux valeurs tirées au hasard.
<?php
$tab = array('daniel','isabelle','david','daniel', 'antoine');
$hasard = array_rand($tab,2);
print_r($hasard); // tableau des clés tirées au hasard
echo '<br>Voici la première valeur tirée au hasard : '.$tab[$hasard[0]];
?>
Affichage
Array ( [0] => 2 [1] => 4 )
Voici la première valeur tirée au hasard : david
Si le deuxième paramètre n’est pas spécifié, la fonction retourne qu’une seule valeur.
<?php
$tab = array('daniel','isabelle','david','daniel', 'antoine');
$hasard = array_rand($tab); // une seule clé tirée au hasard
echo 'Voici la valeur tirée au hasard : '.$tab[$hasard];
?>
Affichage
Voici la valeur tirée au hasard : isabelle