首页 > 代码库 > 关于php的array_diff和array_diff_assoc的使用总结
关于php的array_diff和array_diff_assoc的使用总结
关于php的array_diff和array_diff_assoc的使用总结
版权声明:本文为博主原创文章,未经博主允许不得转载。
好了,这是我第一次写csdn博文,允许兴奋一下
以下是我在开发一个商城系统时遇到使用array_diff的一些总结,写出来分享,也作为自己的一次回顾吧,过程很罗嗦,请各位看官耐心点。
一:使用array_diff和array_diff_assoc前奏
在商城开发中,经常要用到对数据的增删改查。其中,数据的更新,很多时候我们只需要对其中的一个字段,或者部分字段进行更新,而不需要全部字段一起更新,那么这里就需要找出哪些是需要更新的,哪些是不需要更新的。array_diff和array_diff_assoc均可以检查数组的差值,我们只需对比从数据库中获取的要更新的旧数据数组和提交的新数据数组作比较,array_diff和array_diff_assoc均可返回差数组。
二:学习array_diff 和array_diff_assoc
array_diff()
array array_diff( array $array1
, array $array2
[, array $...
] ),返回一个数组,数组中包括了array1中所有与其 他数组不同值的元素,另外对应的键名保留。但该函数只能对多维数组的第一维进行差值比较。而且这种对比时只对键值的对比,与键 名无关(只会找两个(或两个以上)数组中键值有区别的值)。
例子: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两个差值的。各位看官如果不信,可以动手试试。小弟新手一枚,万事开头难,第一次写博文,即使 有点菜,希望各路大神海涵。
---------2015.11.7
关于php的array_diff和array_diff_assoc的使用总结