array_diff

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_diffCalcule la différence entre des tableaux

Description

array_diff(array$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.

Liste de paramètres

array

Le tableau depuis lequel comparer

arrays

Tableaux à comparer contre

Valeurs de retour

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.

Historique

VersionDescription
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.

Exemples

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().

Notes

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]);.

Voir aussi

To Top