PHP Doku:: Berechnet den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Vergleich der Schlüssel - function.array-diff-ukey.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzVariablen- und typbezogene ErweiterungenArraysArray Funktionenarray_diff_ukey

Ein Service von Reinhard Neidl - Webprogrammierung.

Array Funktionen

<<array_diff_uassoc

array_diff>>

array_diff_ukey

(PHP 5 >= 5.1.0)

array_diff_ukeyBerechnet den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Vergleich der Schlüssel

Beschreibung

array array_diff_ukey ( array $array1 , array $array2 [, array $ ... ], callback $key_compare_func )

Vergleicht die Schlüssel von array1 mit den Schlüsseln von array2 und gibt die Unterschiede zurück. Diese Funktion arbeitet wie array_diff() mit dem Unterschied, dass der Vergleich mit den Schlüsseln statt den Werten arbeitet.

Anders als von array_diff_key() wird eine vom Benutzer definierte Callbackfunktion für die Vergleiche anstelle einer eingebauten Funktion verwendet.

Parameter-Liste

array1

Das Array, das verglichen werden soll

array2

Das Array, mit dem verglichen werden soll

...

Weitere Arrays, mit denen verglichen werden soll

key_compare_func

Die zu benutzende Callback-Funktion. Die Callbackfunktion muss einen Integer kleiner als, genau gleich oder größer als Null zurückgeben, wenn das erste Argument entsprechend als kleiner, gleich oder größer als das zweite betrachtet wird.

Rückgabewerte

Gibt ein Array mit allen Einträgen von array1 zurück, die in keinem der anderen Arrays vorhanden sind.

Beispiele

Beispiel #1 array_diff_ukey()-Beispiel

<?php
function key_compare_func($key1$key2)
{
    if (
$key1 == $key2)
        return 
0;
    else if (
$key1 $key2)
        return 
1;
    else
        return -
1;
}

$array1 = array('blau' => 1'rot'  => 2'grün' => 3'violett' => 4);
$array2 = array('grün' => 5'blau' => 6'gelb' => 7'türkis'  => 8);

var_dump(array_diff_ukey($array1$array2'key_compare_func'));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

array(2) {
  ["rot"]=>
  int(2)
  ["violett"]=>
  int(4)
}

Anmerkungen

Hinweis:

Diese Funktion prüft nur eine Dimension eines n-dimensionalen Arrays. Natürlich können Sie tiefere Dimensionen prüfen, indem Sie z.B. array_diff_ukey($array1[0], $array2[0], 'callback_func'); benutzen.

Siehe auch

  • array_diff() - Ermittelt die Unterschiede zwischen Arrays
  • array_udiff() - Ermittelt den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Datenvergleich
  • array_diff_assoc() - Berechnet den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung
  • array_diff_uassoc() - Berechnet den Unterschied von Arrays mit zusätzlicher Indexprüfung, welche durch eine benutzerdefinierte Funktion vorgenommen wird
  • 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_diff_key() - Berechnet den Unterschied zwischen Arrays, indem es die Schlüssel vergleicht
  • array_intersect() - Ermittelt die Schnittmenge von Arrays
  • array_intersect_assoc() - Ermittelt die Schnittmenge von Arrays mit Indexprüfung
  • array_intersect_uassoc() - Ermittelt die Schnittmenge von Arrays mit Indexprüfung; vergleicht Indizes mit einer Callbackfunktion
  • array_intersect_key() - Ermittelt die Schnittmenge von Arrays, indem es die Schlüssel vergleicht
  • array_intersect_ukey() - Ermittelt die Schnittmenge zweier Arrays mittels eines durch eine Callbackfunktion durchgeführten Schlüsselvergleiches


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
jordancdarwin at googlemail dot com
15.12.2007 22:41
Note, also that when you are using a callback function you can use the text-placeholders as this function relies on the retval of the function you give.

So, instead of 1,0,-1 you can use TRUE and FALSE if using only two options.

Just thought it may help you



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)