Rechercher dans un tableau

Nous allons maintenant faire des recherches dans des arrays. Cela vous sera parfois très utile pour savoir si votre array contient ou non certaines informations.
Nous allons voir trois types de recherches, basées sur des fonctions PHP :

  • array_key_exists : pour vérifier si une clé existe dans l'array ; 
  • in_array : pour vérifier si une valeur existe dans l'array ; 
  • array_search : pour récupérer la clé d'une valeur dans l'array.

Vérifier si une clé existe dans l'array : array_key_exists



Voici notre problème : on a un array, mais on ne sait pas si la clé qu'on cherche s'y trouve.
Pour vérifier ça, on va utiliser la fonction array_key_exists qui va parcourir le tableau pour nous et nous dire s'il contient cette clé.

On doit d'abord lui donner le nom de la clé à rechercher, puis le nom de l'array dans lequel on fait la recherche :

Code : PHP 

1

<?php array_key_exists('cle', $array); ?>



La fonction renvoie un booléen, c'est-à-dire true (vrai) si la clé est dans l'array, et false (faux) si la clé ne s'y trouve pas. Ça nous permet de faire un test facilement avec un if :

Code : PHP 

 1

 2

 3

 4

 5

 6

 7

 8

 9

10

11

12

13

14

15

16

17

18

<?php

$coordonnees = array (

    'prenom' => 'François',

    'nom' => 'Dupont',

    'adresse' => '3 Rue du Paradis',

    'ville' => 'Marseille');


if (array_key_exists('nom', $coordonnees))

{

    echo 'La clé "nom" se trouve dans les coordonnées !';

}


if (array_key_exists('pays', $coordonnees))

{

    echo 'La clé "pays" se trouve dans les coordonnées !';

}


?>



On ne trouvera que « nom », et pas « pays » (logique). Seule la première condition sera donc exécutée.


Vérifier si une valeur existe dans l'array : in_array



Le principe est le même que array_key_exists… mais cette fois on recherche dans les valeurs. in_array renvoie true si la valeur se trouve dans l'array, false si elle ne s'y trouve pas.

Pour changer un peu de notre array $coordonnees, je vais en créer un nouveau (numéroté) composé de fruits. ;-)

Code : PHP 

 1

 2

 3

 4

 5

 6

 7

 8

 9

10

11

12

13

<?php

$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');


if (in_array('Myrtille', $fruits))

{

    echo 'La valeur "Myrtille" se trouve dans les fruits !';

}


if (in_array('Cerise', $fruits))

{

    echo 'La valeur "Cerise" se trouve dans les fruits !';

}

?>



On ne voit que le message pour la cerise, tout simplement parce que in_array a renvoyé true pour « Cerise » et false pour « Myrtille ».


Récupérer la clé d'une valeur dans l'array : array_search



array_search fonctionne comme in_array : il travaille sur les valeurs d'un array. Voici ce que renvoie la fonction :

  • si elle a trouvé la valeur, array_search renvoie la clé correspondante (c'est-à-dire le numéro si c'est un array numéroté, ou le nom de la clé si c'est un array associatif);
  • si elle n'a pas trouvé la valeur, array_search renvoie false.

On reprend l'array numéroté avec les fruits :

Code : PHP

1

2

3

4

5

6

7

8

9

<?php

$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');


$position = array_search('Fraise', $fruits);

echo '"Fraise" se trouve en position ' . $position . '<br />';


$position = array_search('Banane', $fruits);

echo '"Banane" se trouve en position ' . $position;

?>


Je sais que je me répète, mais n'oubliez pas qu'un array numéroté commence à 0 ! Cela explique donc pourquoi on nous répond que « Banane » se trouve en position 0.



Voilà donc les fonctions qu'il fallait connaître pour faire une recherche dans un array. Il y en a d'autres mais vous connaissez maintenant les principales.

Créé avec HelpNDoc Personal Edition: Créer des documents d'aide PDF facilement