Ermittelt die Unterschiede zwischen Arrays

# array_diff

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

array_diff — Ermittelt die Unterschiede zwischen Arrays

### Beschreibung

function 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

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
    )

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

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

    <?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');
    var_dump($result);
    ?>

Eine alternative Vergleichsfunktion ist 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open