当遇到取出的data是个二维数组且其中会有部分一维数组重复或者只有极个别字段不同,而你想过滤重复,
只需要将一维数组的某个字段作为key就可以去除重复。
例:
数据中有两个相同的数组,将其中的id作为二维数组的key就可以过滤相同数组,结果为:
使用的方法如下
$arr是要修改的数组,$key是要用来作为key的某个字段,遍历数组并取出$item中的字段作为$result的key,并将$result[$rKey]赋予原来的item的值,这样result就是以该字段作为key的二维数组
这是通过以某个字段为key来过滤重复数据,如果在一维数组中的大部分字段一样,只有个别不同且你只需要其中一条数据,则将数组根据这个字段进行排列再进行过滤,例如:
根据order排序之后从小到大顺序排列,这样在通过key过滤时只会保留排在后面的那一条数据。根据场景不同,order可以是时间戳等等
延伸:这个方法还可以用作数据的拼接。数据如下:
这两个数组我都用了字段name的值为key值,因此只需遍历其中一个数组并判断是否存在这个key,代码如下:
得到的的数据为:
第二个数组$v的数据会拼接在第一个数组中同一key值的一维数组内。
注意的是在用完key过滤之后输出结果时要用array_values输出键值,不保留键名。
此外如果你用的是yii框架就不需要那么麻烦,在数据库取数的时候就可以直接将某个字段做key。
用yii查找数据时加上indexBy(‘id’),取出的数据则是用id这个字段的值来做key。
而当一维数组要去重时,php有内置函数array_unique可以去除重复数据。
知识浅薄。。。分享的是很简单且实用的东西。。。