Longhorn PHP 2023 - Call for Papers

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

Returning non-integer values from the comparison function, such as float, will result in an internal cast to int of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

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

Das "a" => "gruen"-Paar ist in beiden Arrays enthalten und daher nicht in der Ausgabe der Funktion. Im Gegensatz dazu ist das Paar 0 => "rot" in der Ausgabe, weil "rot" im zweiten Argument 1 als Schlüssel hat.

<?php
function key_compare_func($a, $b)
{
if (
$a === $b) {
return
0;
}
return (
$a > $b)? 1:-1;
}

$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 prüft nur eine Dimension eines n-dimensionalen Arrays. Natürlich können tiefere Ebenen überprüft werden, 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
9 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