PHP array_diff 的应用
来源:互联网 发布:mmd千本樱镜头数据 编辑:程序博客网 时间:2024/04/27 19:37
定义和用法:
array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。
在返回的数组中,键名保持不变。
语法
array_diff(array1,array2,array3...);参数描述array1必需。与其他数组进行比较的第一个数组。array2必需。与第一个数组进行比较的数组。array3可选。与第一个数组进行比较的其他数组提示和注释
提示:可用一个或任意多个数组与第一个数组进行比较。
返回值
返回值:返回差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键值。PHP 版本:4.0.1+说明:
网上是这样说的,但我平时用的时候,只知道他是比较差集的,也没怎么多想,但是最近我的项目中有关于标签的处理问题,用到了这个,以前从来没有这样用过,这里记录下,以后再有这种情况,也可以应用下.
我的业务要求:每个客户可以有单个或者多个标签,而标签存储要存储为单条或者多条记录,那么对于添加,很简单了,就是添加一条,或者批量添加多条记录,但是修改,就不太一样了,就是以最新的为主,通俗的说,就是要是旧标签里面不包含新的标签,那么我们要添加新标签,删除旧标签. 但是还有情况是: 假如旧标签中有部分是包含新标签的其中一个或者多个,那么问题就是,我们出去旧标签中不包含新标签的,添加新标签在旧标签中不存在的.估计有点晕了,我举例说明一下:
举例:
旧标签: [A, B, C ]
新标签: [C, D, E]
分析如下:
1: 其实我们目的是: 以新的为准: 我们要把新标签中的D, E添加, 把旧标签中的A,B 删除
像上面这种情况, 我第一次想到就是把旧标签全删除,然后添加新的,不就行了, 但是细细想想不妥, 删除啊,什么概念啊,我知道对于数据表中的数据删除,是很慎重的,再说了,现在可能项目中,每个用户就有几个标签,那要是有很多个那,难道我们还要删除吗? 还有就是当我们删除表数据时, 会发现数据文件尺寸并没有减小。这是因为删除操作后在数据文件中留下碎片所致. 所以这种方法不可取!
然后可能我又会想到,遍历他们吧,让后进行比较,不对照的添加或者删除,我发现这种特别麻烦,两个数据都要进行遍历,数据要一条一条进行比较,数据少还行,数据多了,就不好了!
所以这次我们想到一个办法,就是利用了php函数array-diff()
例如:
1: array_diff (旧, 新) => [A, B] => 删除(修改状态为:禁用状态)
2: array_diff(新, 旧) => [D ,E] => 添加
上面是不是解决了问题,既把旧的处理了,也把新的添加了,是不是不错的..........
- PHP array_diff 的应用
- php array_diff()
- PHP的array_merge、array_diff与null
- PHP array_diff() 函数
- PHP array_diff() 函数用法
- php array_diff array_intersect用法
- PHP 数组遍历 的差异(array_diff 的实现)
- 深思 PHP 数组遍历的差异(array_diff 的实现)
- 关于php的array_diff和array_diff_assoc的使用总结
- PHP 数组遍历 的差异(array_diff 的实现)
- php-Arrays 函数-array_diff-计算数组的差集
- PHP数组遍历差异(array_diff的实现)
- 有关PHP函数:array_diff()与array_diff_assoc()的一些理解点
- array_diff的使用
- PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集
- PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集
- php 算法之分割数组,不用array_chunk(),算法之二,取数组的差值,不用array_diff()
- 每天一个学习一个新的php函数(2) array_diff()/array_diff_key()/array_diff_assoc()
- Android之使用TCP和URL协议进行网络编程
- JsonKit的基本使用
- Native与H5交互的那些事
- 用Ghost搭建自己的博客
- 把数组排成最小的数
- PHP array_diff 的应用
- 一起学BAT脚本(batch script)--01
- hdu 4774 Stealing Harry Potter's Precious 状态压缩+bfs 解题报告
- Java Heap Memory
- PropertyPlaceholderConfigurer和ReloadableResourceBundleMessageSource区别
- Executor框架-Executors
- 设计模式-创建型-单例模式(Singleton)
- spss19.0
- 我的框架项目开发思路