(PHP 5, PHP 7, PHP 8)
array_udiff_assoc — Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht mittels einer Callbackfunktion
Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht mittels einer Callbackfunktion.
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_assoc($array1[0], $array2[0], "data_compare_func");verwenden.
arrayDas erste Array.
arraysArrays zum Vergleichen.
value_compare_funcDie 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.
  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.
 
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;
};
?>
   array_udiff_assoc() gibt ein array mit allen Werten von
   array, welche in keinem der anderen Argumente
   enthalten sind, zurück. Beachten Sie, dass Schlüssel anders als von
   array_diff() und array_udiff() für
   den Vergleich herangezogen werden. Der Vergleich der Arrayinhalte wird
   von einer benutzerdefinierten Callbackfunktion durchgeführt. In dieser
   Hinsicht ist das Verhalten anders als jenes von
   array_diff_assoc(), welche eine eingebaute
   Vergleichsfunktion verwendet.
  
Beispiel #1 array_udiff_assoc()-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;
    }
}
$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_assoc($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )
    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )
    [0] => cr Object
        (
            [priv_member: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.
  
