php array_udiff工作原理

首先,介绍一下这个函数的功能:

定义和用法

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;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值