Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Indizes mittels einer Callbackfunktion

# array_udiff_uassoc

(PHP 5, PHP 7, PHP 8)

array_udiff_uassoc — Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Indizes mittels einer Callbackfunktion

### Beschreibung

function array_udiff_uassoc(
array `$array`,
array `...$arrays`,
callable `$value_compare_func`,
callable `$key_compare_func`
): array

Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Indizes mittels einer Callbackfunktion.

Beachten Sie, dass anders als bei array_diff() und array_udiff() Schlüssel für den Vergleich herangezogen werden.

### Parameter-Liste

`array`

  Das erste Array.

`arrays`

  Arrays zum Vergleichen.

`value_compare_func`

  Die Vergleichsfunktion muss einen Integer kleiner als, gleich oder größer als Null zurückgeben, wenn das erste Argument respektive kleiner, gleich oder größer als das zweite ist.

  function callback(mixed `$a`, mixed `$b`): int
  Achtung

  Wenn die Vergleichsfunktion nicht-ganzzahlige Werte zurückgibt, z. B. vom Typ float, wird der Rückgabewert des Callbacks intern in den Typ int umgewandelt. Werte wie `0.99` und `0.1` werden also beide in einen Integer-Wert von `0` umgewandelt, wodurch diese Werte als gleichwertig eingestuft werden.

  Achtung

  Das Sortier-Callback muss alle Werte aus allen Arrays in beliebiger Reihenfolge verarbeiten, unabhängig von der Reihenfolge, in der sie ursprünglich bereitgestellt wurden. Das liegt daran, dass jedes einzelne Array zuerst sortiert wird, bevor es mit anderen Arrays verglichen wird. Zum Beispiel:

  `<?php
  $arrayA = ["string", 1];
  $arrayB = [["value" => 1]];
  // $item1 und $item2 können "string", 1 oder ["value" => 1] sein.
  $compareFunc = static function ($item1, $item2) {
  $value1 = is_string($item1) ? strlen($item1) : (is_array($item1) ? $item1["value"] : $item1);
  $value2 = is_string($item2) ? strlen($item2) : (is_array($item2) ? $item2["value"] : $item2);
  return $value1 <=> $value2;
  };
  ?>`
`key_compare_func`

  Ebenso wird der Vergleich der Schlüssel (Indizes) von der benutzerdefinierten Callbackfunktion `data_compare_func` durchgeführt. In dieser Hinsicht ist das Verhalten anders als jenes von array_diff_assoc(), welches die Indizes mit einer eingebauten Vergleichsfunktion vergleicht.

### Rückgabewerte

Gibt ein Array mit allen Werten von `array`, welche in keinem der anderen Argumente enthalten sind, zurück.

### Beispiele

Beispiel #1 array_udiff_uassoc()-Beispiel

`<?php
class cr {
private $priv_member;
function __construct($val)
{
$this->priv_member = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->priv_member === $b->priv_member) return 0;
return ($a->priv_member > $b->priv_member)? 1:-1;
}
static function comp_func_key($a, $b)
{
if ($a === $b) return 0;
return ($a > $b)? 1:-1;
}
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);
$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));
print_r($result);
?>`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Array
    (
        [0.1] => cr Object
            (
                [priv_member:cr:private] => 9
            )

        [0.5] => cr Object
            (
                [priv_member:cr:private] => 12
            )

        [0] => cr Object
            (
                [priv_member:cr:private] => 23
            )
    )

In unserem Beispiel sehen Sie, dass das `"1" => new cr(4)` Paar in beiden Arrays enthalten ist und daher nicht in der Ausgabe der Funktion auftaucht. Denken Sie daran, dass Sie zwei Callbackfunktionen angeben müssen.

### Anmerkungen

> Hinweis: Bitte beachten Sie, dass diese Funktion nur eine Dimension eines n-dimensionalen Arrays überprüft. Natürlich können Sie tiefere Dimensionen prüfen, indem Sie `array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");` verwenden.

### Siehe auch

- array_diff() - Ermittelt die Unterschiede zwischen Arrays
- 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_udiff_assoc() - Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht mittels einer Callbackfunktion
- array_intersect() - Ermittelt die Schnittmenge von Arrays
- array_intersect_assoc() - Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung
- array_uintersect() - Ermittelt die Schnittmenge von Arrays, vergleicht Daten mittels einer Callbackfunktion
- array_uintersect_assoc() - Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten mittels einer Callbackfunktion
- array_uintersect_uassoc() - Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Schlüssel mittels separaten Callbackfunktionen

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