‘壹’ PHP两个数组的交集
你这个搞得是不是太复杂了。请使用array_diff比较数组,返回不同,再计算交集。
‘贰’ PHP高手请进。把一个三维数组里的所有二维数组取出来比较,取交集...
//foreach三维,一步步算下去就行
$arr = array(
array('a'=>'1','b'=>'2','c'=>'5','d'=>'56'),
array('a'=>'1','c'=>'5','d'=>'56'),
array('a'=>'1','c'=>'5','e'=>'44'),
array('a'=>'1','c'=>'5','d'=>'56','f'=>'d')
);
if (count($arr)>0)
{
foreach($arr as $key=>$val)
{
if ($key==0)//第一个先取出来
{
$tmp_arr = $val;
}
else
{
$tmp_arr = array_intersect_assoc($tmp_arr,$val);
}
}
}
print_r($tmp_arr);
‘叁’ 计算数组的交集,用回调函数比较数据
array_uintersect
(PHP 5, PHP 7)
array_uintersect — 计算数组的交集,用回调函数比较数据
说明
array_uintersect ( array $array1 , array $array2 [, array $... ], callable $value_compare_func ) : array
array_uintersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。数据比较是用回调函数进行的。 此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。
参数
array1
第一个数组。
array2
第二个数组。
value_compare_func
在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
callback ( mixed $a, mixed $b ) : int
返回值
Returns an array containing all the values of array1 that are present in all the arguments.
范例
示例 #1 array_uintersect() 例子
"green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_uintersect($array1, $array2, "strcasecmp"));
?>