内容简介:http://stackoverflow.com/questions/2561248/how-do-i-use-array-unique-on-an-array-of-arrays
我有一个数组
Array( [0] => Array ( [0] => 33 [user_id] => 33 [1] => 3 [frame_id] => 3 ) [1] => Array ( [0] => 33 [user_id] => 33 [1] => 3 [frame_id] => 3 ) [2] => Array ( [0] => 33 [user_id] => 33 [1] => 8 [frame_id] => 8 ) [3] => Array ( [0] => 33 [user_id] => 33 [1] => 3 [frame_id] => 3 ) [4] => Array ( [0] => 33 [user_id] => 33 [1] => 3 [frame_id] => 3 )
)
你可以看到键0与1,3和4相同.键2与它们不同.
对它们运行array_unique函数时,只剩下的是
Array ( [0] => Array ( [0] => 33 [user_id] => 33 [1] => 3 [frame_id] => 3 )
)
为什么array_unique不能按预期工作的任何想法?
这是因为array_unique使用字符串比较来比较项目.从 docs
:
Note: Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In words: when the string representation is the same. The first element will be used.
数组的字符串表示形式就是数组,不管它的内容如何.
您可以使用以下操作来做所需的操作:
$arr = array( array('user_id' => 33, 'frame_id' => 3), array('user_id' => 33, 'frame_id' => 3), array('user_id' => 33, 'frame_id' => 8) ); $arr = array_intersect_key($arr, array_unique(array_map('serialize', $arr))); //result: array 0 => array 'user_id' => int 33 'user' => int 3 2 => array 'user_id' => int 33 'user' => int 8
以下是它的工作原理:
>每个数组项被序列化.这个
将基于阵列是独一无二的
内容.
>这个结果是通过array_unique来运行的,
所以只有数组有唯一的
留下签名.
> array_intersect_key将会占用
独特的项目的关键
地图/唯一功能(由于源数组的键被保留)并拉
他们从您的原始来源
阵列.
http://stackoverflow.com/questions/2561248/how-do-i-use-array-unique-on-an-array-of-arrays
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ES6数组方法使用心得以及一些数组操作整理
- 使用 ES2015 处理数组
- Go语言中数组的使用
- 如何在JavaScript中更好地使用数组
- ios基础 – 常见的数组使用介绍[原创]
- numpy使用技巧之数组过滤实例代码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
B端产品经理必修课
李宽 / 电子工业出版社 / 2018-9 / 59
《B端产品经理必修课:从业务逻辑到产品构建全攻略》主要讲述了“单个产品管理流程”,以展示B 端产品经理的工作方法及B 端产品的设计方法。《B端产品经理必修课:从业务逻辑到产品构建全攻略》分为三个部分。第一部分主要讲述的是B 端产品经理的工作流程和定义(即单个产品管理流程),以及从事B 端产品经理的职业现状和规划,还包括设计B 端产品时需要了解的指导思想。第二部分是通过各个章节来讲述单个产品管理流程......一起来看看 《B端产品经理必修课》 这本书的介绍吧!
XML 在线格式化
在线 XML 格式化压缩工具
Markdown 在线编辑器
Markdown 在线编辑器