Différence et intersection des tableaux
PHP propose des fonctions utiles pour repérer la différence entre les tableaux ou au contraire pour vérifier les éléments identiques entre les tableaux.
Différences entre les tableaux
La fonction array_diff() calcule la différence entre aux moins deux tableaux à fournir en paramètre. La fonction retourne les éléments qui sont présent dans le premier mais pas dans les autres. L’association entre les clés et les valeurs est préservé.
<?php
$tab1 = array('daniel','robert', 'antoine', 'isabelle');
$tab2 = array('daniel','isabelle');
$diff = array_diff($tab1,$tab2);
print_r($diff);
?>
Affichage
Array ( [1] => robert [2] => antoine )
Note : si vous voulez aussi vérifier la correspondance des clés, utilisez la fonction array_diff_assoc(). Un élément n’est retenu que s’il n’est pas présent dans les autres tableaux avec la même clé comme index.
<?php
$tab1 = array('daniel','robert', 'antoine', 'isabelle');
$tab2 = array('daniel','isabelle');
$diff = array_diff_assoc($tab1,$tab2);
print_r($diff);
?>
Affichage
Array ( [1] => robert [2] => antoine [3] => isabelle )
Vous remarquez que même si la valeur isabelle est aussi présent dans le deuxième tableau, ce n’est pas avec la même clé comme index (index 3 dans le premier tableau et index 1 dans le deuxième tableau).
Intersections entre les tableaux
La fonction array_intersect() retourne, au contraire, les éléments qui sont présents dans tous les tableaux passés en argument. L’association entre les clés et les valeurs est préservé.
<?php
$tab1 = array('daniel','robert', 'antoine', 'isabelle');
$tab2 = array('daniel','isabelle');
$inter = array_intersect($tab1,$tab2);
print_r($inter);
?>
Affichage
Array ( [0] => daniel [3] => isabelle )
Note : si vous voulez aussi vérifier la correspondance des clés, utilisez la fonction array_intersect_assoc(). Un élément n’est retenu que s’il est présent dans les autres tableaux avec la même clé comme index.
<?php
$tab1 = array('daniel','robert', 'antoine', 'isabelle');
$tab2 = array('daniel','isabelle');
$inter = array_intersect($tab1,$tab2);
print_r($inter);
?>
Affichage
Array ( [0] => daniel )
Gérer les doublons
La fonction array_unique() permet d’enlever dans un tableau (passé en argument) tous les doublons de valeurs.
<?php
$tab1 = array('daniel','robert', 'antoine', 'isabelle','daniel', 'robert');
$doublon = array_unique($tab1);
print_r($doublon);
?>
Affichage
Array ( [0] => daniel [1] => robert [2] => antoine [3] => isabelle )