PHP Doku:: Ermittelt die Schnittmenge von Arrays, vergleicht Daten mittels einer Callbackfunktion - function.array-uintersect.html

Verlauf / Chronik / History: (1) anzeigen

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

Ein Service von Reinhard Neidl - Webprogrammierung.

Array Funktionen

<<array_uintersect_uassoc

array_unique>>

array_uintersect

(PHP 5)

array_uintersect Ermittelt die Schnittmenge von Arrays, vergleicht Daten mittels einer Callbackfunktion

Beschreibung

array array_uintersect ( array $array1 , array $array2 [, array $ ... ], callback $data_compare_func )

array_uintersect() gibt ein Array mit allen Werten aus array1 zurück, die ebenfalls in allen anderen Argumenten enthalten sind. Die Daten werden durch eine Callbackfunktion verglichen.

Beispiel #1 array_uintersect() Beispiel

<?php
$array1 
= array("a" => "grün""b" => "braun""c" => "blau""rot");
$array2 = array("a" => "GRÜN""B" => "braun""gelb""rot");

print_r(array_uintersect($array1$array2"strcasecmp"));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
    [a] => grün
    [b] => braun
    [0] => rot
)

Für den Vergleich der Daten wird die angegebene Callbackfunktion herangezogen. Diese 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.

Siehe auch array_intersect(), array_uintersect_assoc(), array_intersect_uassoc() und array_uintersect_uassoc().


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
Nate at RuggFamily dot com
2.02.2007 21:03
I want to stress that in the user function, you do need to return either a 1 or a -1 properly; you cannot simply return 0 if the results are equal and 1 if they are not. 

The following code is incorrect:

<?php
function myfunction($v1,$v2)
{
if (
$v1===$v2)
    {
    return
0;
    }
return
1;
}

$a1=array(1, 2, 4);
$a2=array(1, 3, 4);
print_r(array_uintersect($a1,$a2,"myfunction"));
?>

This code is correct:

<?php
function myfunction($v1,$v2)
{
if (
$v1===$v2)
    {
    return
0;
    }
if (
$v1 > $v2) return 1;
return -
1;
}
$a1=array(1, 2, 4);
$a2=array(1, 3, 4);
print_r(array_uintersect($a1,$a2,"myfunction"));
?>



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",...)