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

Posted 的士特啰嗦司机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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的使用总结的主要内容,如果未能解决你的问题,请参考以下文章

php函数 array_diff

PHP PHP array_diff()完全比较

PHP 使用get_class_methods()和array_diff() 兩個相同的類中方法差集

php内置函数分析array_diff()

深思 PHP 数组遍历的差异(array_diff 的实现)

带有实例或自定义回调函数的 PHP array_diff?