(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Calcule la différence entre des tableaux
$array
, array ...$arrays
): array
array_diff() compare le tableau
array
avec un ou plusieurs tableaux
et retourne les valeurs du tableau array
qui ne sont pas présentes dans les autres tableaux.
array
Le tableau depuis lequel comparer
arrays
Tableaux à comparer contre
Retourne un tableau contenant toutes les entités du tableau
array
qui ne sont présentes dans aucun des
autres tableaux. Les clés du tableau array
sont
préservées.
Version | Description |
---|---|
8.0.0 | Cette fonction peut désormais être appelée avec un seul paramètre. Auparavant, au moins deux paramètres étaient nécessaires. |
Exemple #1 Exemple avec array_diff()
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
Les valeurs multiples dans array1 seront toutes traitées de la même façon. Ce qui affichera :
Array ( [1] => blue )
Exemple #2 Exemple avec la fonction array_diff() avec des types qui ne correspondent pas
Deux éléments sont considérés comme égaux si et seulement si
(string) $elem1 === (string) $elem2
; en somme, lorsque
la représentation de la chaînes
de caractères est la même.
<?php
// Ceci va générer une notice car un tableau ne peut pas être transformé en chaîne de caractères.
$source = [1, 2, 3, 4];
$filter = [3, 4, [5], 6];
$result = array_diff($source, $filter);
// Alors que ceci est bien, depuis que les objets peuvent être transformés en chaîne de caractères.
class S {
private $v;
public function __construct(string $v) {
$this->v = $v;
}
public function __toString() {
return $this->v;
}
}
$source = [new S('a'), new S('b'), new S('c')];
$filter = [new S('b'), new S('c'), new S('d')];
$result = array_diff($source, $filter);
// $result contient désormais une instance de S('a');
?>
Pour utiliser une fonction de comparaison alternative, repportez vous à la fonction array_udiff().
Note:
Notez que cette fonction ne vérifie qu'une seule dimension d'un tableau à plusieurs dimensions. Bien sûr, vous pouvez vérifier des dimensions plus profondes en utilisant
array_diff($array1[0], $array2[0]);
.