array_diff

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

array_diffErmittelt die Unterschiede zwischen Arrays

Beschreibung

array_diff(array$array, array...$arrays): array

Vergleicht array mit einem oder mehr anderen Arrays und gibt die Werte aus array zurück, die in keinem der anderen Arrays enthalten sind.

Parameter-Liste

array

Das Array, das verglichen werden soll

arrays

Arrays zum Vergleichen

Rückgabewerte

Gibt ein Array mit allen Werten von array zurück, die in keinem der anderen Arrays vorhanden sind. Schlüssel im Array array bleiben erhalten.

Changelog

VersionBeschreibung
8.0.0 Diese Funktion kann jetzt mit nur einem Parameter aufgerufen werden. Zuvor waren mindestens zwei Parameter erforderlich.

Beispiele

Beispiel #1 array_diff()-Beispiel

<?php
$array1
= array("a" => "grün", "rot", "blau", "rot");
$array2 = array("b" => "grün", "gelb", "rot");
$result = array_diff($array1, $array2);

print_r($result);
?>

Wiederholte Elemente in $array1 werden alle gleich behandelt. Dies wird folgendes ausgeben:

Array ( [1] => blau )

Beispiel #2 array_diff()-Beispiel mit nicht übereinstimmenden Typen

Zwei Elemente werden nur dann als gleich angesehen, wenn (string) $elem1 === (string) $elem2. In anderen Worten: Wenn die String-Repräsentation die gleiche ist.

<?php
// Dies generiert eine Notice dass ein Array nicht in einen String umgewandelt werden kann.
$source = [1, 2, 3, 4];
$filter = [3, 4, [5], 6];
$result = array_diff($source, $filter);

// Wohingegen dies in Ordnung ist, da die Objekte in einen String umgewandelt werden können.
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 enthält nun ein Exemplar von S('a');
?>

To use an alternate comparison function, see array_udiff().

Anmerkungen

Hinweis:

Beachten Sie, dass diese Funktion nur eine Dimension eines n-dimensionalen Arrays prüft. Natürlich können Sie tiefere Dimensionen prüfen, indem Sie z. B. array_diff($array1[0], $array2[0]); benutzen.

Siehe auch

  • array_diff_assoc() - Berechnet den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung
  • array_udiff() - Ermittelt den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Datenvergleich
  • array_intersect() - Ermittelt die Schnittmenge von Arrays
  • array_intersect_assoc() - Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung
To Top