(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Ermittelt die Unterschiede zwischen Arrays
Vergleicht array mit einem oder mehr anderen Arrays und
gibt die Werte aus array zurück, die in keinem der
anderen Arrays enthalten sind.
arrayDas Array, das verglichen werden soll
arraysArrays zum Vergleichen
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.
| Version | Beschreibung |
|---|---|
| 8.0.0 | Diese Funktion kann jetzt mit nur einem Parameter aufgerufen werden. Zuvor waren mindestens zwei Parameter erforderlich. |
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().
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.