PHPCon Poland 2024

array_diff_uassoc

(PHP 5, PHP 7, PHP 8)

array_diff_uassocBerechnet den Unterschied von Arrays mit zusätzlicher Indexprüfung, welche durch eine benutzerdefinierte Callback-Funktion vorgenommen wird

Beschreibung

array_diff_uassoc(array $array, array ...$arrays, callable $key_compare_func): array

Vergleicht array mit arrays und gibt den Unterschied zurück. Im Gegensatz zu array_diff() werden die Arrays anhand ihrer Schlüssel verglichen.

Im Gegensatz zu array_diff_assoc() wird für den Vergleich der Indizes keine interne Funktion verwendet, sondern eine benutzerdefinierte Callback-Funktion.

Parameter-Liste

array

Das Array für den Vergleich.

arrays

Die Arrays, die damit verglichen werden.

key_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.

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.

Rückgabewerte

Gibt ein Array zurück, welches alle Werte aus array enthält, die in keinem der anderen Arrays enthalten sind.

Beispiele

Beispiel #1 array_diff_uassoc()-Beispiel

In diesem Beispiel ist das "a" => "gruen"-Paar in beiden Arrays enthalten und taucht daher nicht in der Ausgabe der Funktion auf. Andererseits ist das Paar 0 => "rot" in der Ausgabe, weil dem Wert "rot" im ersten Array automatisch der Schlüssel 0 zugewiesen wird, während ihm im zweiten Array 1 zugewiesen wird, weil der Schlüssel 0 bereits von gelb belegt ist.

<?php
function key_compare_func($a, $b)
{
return
$a <=> $b;
}

$array1 = array("a" => "gruen", "b" => "braun", "c" => "blau", "rot");
$array2 = array("a" => "gruen", "gelb", "rot");
$ergebnis = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($ergebnis);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
    [b] => braun
    [c] => blau
    [0] => rot
)

Die Gleichheit von zwei Indizes wird durch die benutzerdefinierte Callback-Funktion überprüft.

Anmerkungen

Hinweis:

Diese Funktion überprüft nur eine Dimension eines n-dimensionalen Arrays. Es ist möglich, tiefere Dimensionen zu überprüfen, indem zum Beispiel array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); verwendet wird.

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_udiff_uassoc() - Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Indizes 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

add a note

User Contributed Notes 1 note

up
2
MD. ABU SAYEM
10 years ago
//array_diff_uassoc for multidimenssional array
$color_1=array('a'=>'white','b'=>'red','c'=>array('a'=>'green','b'=>'blue','c'=>'yellow'));
$color_2=array('a'=>'white','b'=>'red','c'=>array('a'=>'white','b'=>'red','c'=>'yellow'));

function key_compare($a,$b){
if($a===$b) return 0;
return($a>$b)?1:-1;
}
print_r(array_diff_uassoc($color_1['c'], $color_2['c'],"key_compare"));

//Output
Array
(
[a] => green
[b] => blue
)
To Top