SunshinePHP Developer Conference 2015

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().

add a note add a note

User Contributed Notes 1 note

up
0
Nate at RuggFamily dot com
7 years ago
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"));
?>
To Top