首先,介绍一下这个函数的功能:
定义和用法
array_udiff() 函数用于比较两个(或更多个)数组的键值 ,并返回差集。
注释:该函数使用用户自定义函数比较键值!
该函数比较两个(或更多个)数组的键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键值。
由于上面对自定义函数的功能没有说明,下面是我自行测试的结果并进行了归纳总结:
实验代码如下:
$array1=['g','b','c','e'];
$array2=['f','b','c','a','d'];
array_udiff($array1,$array2,'myfunction');
function myfunction($a,$b)
{
echo $a;
echo $b;
echo ' ';
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
};
输出结果:gb cb gc ge ce fb cb fc fa ca ba fd cd ba bb bc cc ce ed ef eg gf
上面的结果可以分为两部分:
自排序部分:gb cb gc ge ce fb cb fc fa ca ba fd cd
互比较部分:ba bb bc cc ce ed ef eg gf
而这两部分比较的基础就是自定义函数。
那么自定义函数怎么用呢?比较下面两个例子,自行领悟一下(本人语言能力不足,不知如何描述),总而言之就是提供一个入口给我们来自定义比较字符串是怎么在什么情况下相同的
例1:输出['1','2']
$array1=['1','2','3','4'];
$array2=['3','4','-2','6','7','8'];
var_dump(array_udiff($array1,$array2,'myfunction'));
function myfunction($a,$b){
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
例1:输出['1']
$array1=['1','2','3','4'];
$array2=['3','4','-2','6','7','8'];
var_dump(array_udiff($array1,$array2,'myfunction'));
function myfunction($a,$b){
$a=abs($a);
$b=abs($b);
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}