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"));
?>
array_uintersect
(PHP 5)
array_uintersect — Calcule l'intersection de deux tableaux, compare les données en utilisant une fonction de rappel
Description
Calcule l'intersection de deux tableaux, compare les données en utilisant une fonction de rappel.
Liste de paramètres
- array1
-
Le premier tableau.
- array2
-
Le second tableau.
- data_compare_func
-
La fonction de rappel de comparaison.
Pour la comparaison, une fonction de rappel, spécifiée par l'utilisateur, est utilisée. Elle doit retourner un entier, plus petit que, égal à ou plus grand que zéro si le premier argument est considéré comme étant, respectivement, plus petit que, égal à ou plus grand le second.
Valeurs de retour
Retourne un tableau contenant toutes les valeurs du tableau array1 qui sont présentes dans tous les arguments.
Exemples
Exemple #1 Exemple avec array_uintersect()
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_uintersect($array1, $array2, "strcasecmp"));
?>
L'exemple ci-dessus va afficher :
Array ( [a] => green [b] => brown [0] => red )
array_uintersect
02-Feb-2007 09:03
