array_diff
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Ermittelt die Unterschiede zwischen Arrays
Beschreibung
$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
Version | Beschreibung |
---|---|
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