php – 如何在array数组上使用array_unique?

栏目: PHP · 发布时间: 6年前

内容简介: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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP程序设计

PHP程序设计

勒道夫 / 陈浩、胡丹、徐景 / 电子工业出版社 / 2009-3 / 80.00元

《PHP程序设计(第2版)》是最新版本PHP 5的权威指南,其中包含创建者PHP的创建者 Rasmus Lerdorf的独到的见解。《PHP程序设计(第2版)》以一种清晰而简练的风格介绍了PHP语言的语法和程序设计技术,并通过大量的示例演示了它们的正确使用方法和习惯用法。《PHP程序设计(第2版)》还给出了设计风格提示和实际的程序设计建议,这些将帮助你不仅成为一个PHP程序员,而且将是出色的PHP......一起来看看 《PHP程序设计》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具