关于php的array_diff和array_diff_assoc的使用总结

array_diff()  对比 array1 和其他一个或者多个数组,返回在 array1 中但是不在其他 array 里的 

对应的键名保留。

注意 是值。和键名无关。相当于把所有值拿出来 去和其他数组比。

 第一个参数为要对比的数组。

但该函数只能对多维数组的第一维进行差值比较。而且这种对比时只对键值的对比,与键名无关(只会找两个(或两个以上)数组中键值有区别的值)。 

两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的

             例子:array_diff可以找出俩数组的差值c_pid:

                 

但是,如果array的任一键值和更改的值有重叠,则array_diff无法测出此更改值,如下:

正常情况下array1中和array2中的比较中,更新的元素有c_pid和c_order,但结果只得到c_order的差值,为什么呢?

个人理解:array_diff()将array1的值和array2的值做对比,而不考虑键名,所以array1的c_pid的值在array2的c_level中找到,故忽略c_pid的差值。

                 

 

array_diff_assoc()

与array_diff()用法一样,不同的是,它的比较是带上键名的,也就是说它找到的就是几个数组中键名相同键值不同的项,也就是说,上面array_diff的第二种情况它是可以找出c_pid和c_order两个差值的。
 
posted @ 2017-02-17 11:59  的士特啰嗦司机  阅读(4159)  评论(2编辑  收藏  举报