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两个差值的。