array_uintersect

(PHP 5)

array_uintersectComputes the intersection of arrays, compares data by a callback function

Description

array array_uintersect ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Computes the intersection of arrays, compares data by a callback function.

Parameters

array1

The first array.

array2

The second array.

value_compare_func

The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

int callback ( mixed $a, mixed $b )

Return Values

Returns an array containing all the values of array1 that are present in all the arguments.

Examples

Example #1 array_uintersect() example

<?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"));
?>

The above example will output:

Array
(
    [a] => green
    [b] => brown
    [0] => red
)

See Also

Коментарии

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(124);
$a2=array(134);
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(124);
$a2=array(134);
print_r(array_uintersect($a1,$a2,"myfunction"));
?>
2007-02-02 14:03:32
http://php5.kiev.ua/manual/ru/function.array-uintersect.html
Автор:
As for the other "compare function" callbacks, the return value from the callback function doesn't need to be -1, 0, or 1.

cmp($a,$b) just needs to be <0, =0, or >0 depending on whether $a<$b, $a=$b, or $a>$b.
2018-01-02 00:25:21
http://php5.kiev.ua/manual/ru/function.array-uintersect.html
When trying to do a case insensitive comparison between arrays of words, the strcasecmp function works very nicely with this one like so: 

$arr1 = array('blue', 'green', 'red');

$arr2 = array('BLUE', 'Purple', 'Red');

$loose_matches = array_uintersect($arr1, $arr2, 'strcasecmp');

print_r($loose_matches) // array('blue', 'red');
2018-11-16 01:21:26
http://php5.kiev.ua/manual/ru/function.array-uintersect.html
Автор:
If you're rolling your own comparison function, keep in mind that the spaceship operator (i.e. <=>) can be your best friend. It's been around since PHP7. https://www.php.net/manual/en/language.operators.comparison.php

So, for instance, instead of a clunky function like:

<?php
function myFunction($v1$v2) {
   if (
$v1 === $v2) {
      return 
0;
   }
   if (
$v1 $v2) return 1;
   return -
1;
}
?>

You can simplify it to:

<?php
function myFunction($v1$v2) {
   return 
$v1 <=> $v2;
}
?>
2022-03-25 06:17:57
http://php5.kiev.ua/manual/ru/function.array-uintersect.html

    Поддержать сайт на родительском проекте КГБ