php的array_udiff的工作原理实在搞不懂,尤其是回调函数,
1 2 3 4 5 6 7 8 9 10 11 12 |
|
每次的回调函数的参数是什么, 我把它打印出来,可并不像期望的那样,$arr1的每个元素值直接与$arr2的每个元素值相比较,而是
1 2 3 4 5 6 7 8 |
|
回调函数返回的结果又是做什么用的,求解
最后吐槽一下,网上查的结果全他么都是从www3school和php.net复制下来的,实在不能忍,操
PHPz2017-04-10 15:13:04
先不要管它内部是怎么实现比较算法的,我们在callback
里 需要实现的是 回调函数的第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
楼主的例子更改为如下时,便可实现正常的比较功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
回调函数只要实现如何判断传进来的两个值是相等还是大于小于的关系即可。这两个值都是数组的元素。但是不要误会 第一个参数是第一个数组的值,第二个参数是第二个数组的值。
怪我咯2017-04-10 15:13:04
call_back
在这个函数中有2个作用,
* 排序 将array_udiff中的每个参数排序,并返回hash之后的数组
* 过滤 将第一个数组与其他数组比较,过滤出要返回的值
P.S. 我确定这个过程是正确的。参考PHP: array_udiff()
在你的例子中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
高洛峰2017-04-10 15:13:04
array_diff本身是计算数组的差集。貌似不支持回调函数吧?
http://cn2.php.net/manual/zh/function.array-diff.php