php array_udiff_assoc 计算两个数组的差集实例
phparray_udiff()函数用于比较两个(或更多个)数组的键名和键值,并返回差集。此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。本文章通过实例向大家讲解array_udiff()函数的使用方法,
array_udiff_assoc—带索引检查计算数组的差集,用回调函数比较数据
基本语法:
arrayarray_udiff_assoc(array$array1,array$array2[,array$...],callable$data_compare_func)
此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。
Note:注意本函数只检查了多维数组中的一维。当然,可以用array_udiff_assoc($array1[0],$array2[0],"some_comparison_func");来检查更深的维度。
参数介绍
必需。字符串值,定义可调用的比较函数。 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于0的整数。
参数
描述
array1
必需。第一个数组。
array2
必需。第二个数组。
myfunction
返回值
array_udiff_assoc()返回一个数组,该数组包括了所有在array1中但是不在任何其它参数数组中的值。注意和array_diff()与array_udiff()不同的是键名也用于比较。数组数据的比较是用用户提供的回调函数进行的。在此方面和array_diff_assoc()的行为正好相反,后者是用内部函数进行比较的。
实例
<?php classcr{ private$priv_member; functioncr($val){ $this->priv_member=$val; } staticfunctioncomp_func_cr($a,$b){ if($a->priv_member===$b->priv_member)return0; return($a->priv_member>$b->priv_member)?1:-1; } } $a=array( "0.1"=>newcr(9), "0.5"=>newcr(12), 0=>newcr(23), 1=>newcr(4), 2=>newcr(-15), ); $b=array( "0.2"=>newcr(9), "0.5"=>newcr(22), 0=>newcr(3), 1=>newcr(4), 2=>newcr(-15), ); $result=array_udiff_assoc($a,$b,array( "cr", "comp_func_cr" )); print_r($result); ?>
运行结果:
Array ( [0.1]=>crObject ( [priv_member:private]=>9 ) [0.5]=>crObject ( [priv_member:private]=>12 ) [0]=>crObject ( [priv_member:private]=>23 ) )
上例中可以看到键值对"1"=>newcr(4)同时出现在两个数组中因此不在本函数的输出中。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!