当前位置:Gxlcms > PHP教程 > PHParray_diff的应用

PHParray_diff的应用

时间:2021-07-01 10:21:17 帮助过:12人阅读

定义和用法:

array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。

在返回的数组中,键名保持不变。

语法

array_diff(array1,array2,array3...);
参数描述
array1必需。与其他数组进行比较的第一个数组。
array2必需。与第一个数组进行比较的数组。
array3可选。与第一个数组进行比较的其他数组
提示和注释

提示:可用一个或任意多个数组与第一个数组进行比较。

返回值

返回值:返回差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2array3 等等)中的键值。
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教程有兴趣的朋友有所帮助。

人气教程排行