php - 如何从多维数组中删除重复项和原始数组?

标签 php arrays

如何删除多维数组中的重复项? 我尝试了在 stackoverflow 上找到的几个答案,但它们在多数组中都不适合我。我找到的最接近的答案是:

How to delete duplicates in an array? 但这仅适用于一维数组。

例如我有这个:

$array = array(
    [0] = array(
        [color] => red,
        [type] => color,
        [name] => color1
    )
    [1] = array(
        [color] => gray,
        [type] => color,
        [name] => color2
    )
    [2] = array(
        [color] => blue,
        [type] => color,
        [name] => color3
    )
    [3] = array(
        [color] => green,
        [type] => color,
        [name] => color4
    )
    [4] = array(
        [color] => black,
        [type] => color,
        [name] => color5
    )
    [3] = array(
        [color] => gray,
        [type] => color,
        [name] => color2
    )
    [4] = array(
        [color] => blue,
        [type] => color,
        [name] => color3
    )
)

我怎样才能让它变成这样:?

$array = array(
    [0] = array(
        [color] => red,
        [type] => color,
        [name] => color1
    )
    [1] = array(
        [color] => gray,
        [type] => color,
        [name] => color2
    )
    [2] = array(
        [color] => blue,
        [type] => color,
        [name] => color3
    )
    [3] = array(
        [color] => green,
        [type] => color,
        [name] => color4
    )
    [4] = array(
        [color] => black,
        [type] => color,
        [name] => color5
    )
)

最佳答案

嗯,这是一个非常糟糕的答案,但看来您想要唯一的数据,这里有一些非常糟糕的代码来解决这个问题。

$array2 = array();
foreach ($array as $val) 
{
  @$array2[$val['color']]++;
}
foreach ($array as $key=>$val) 
{
  if ($array2[$val['color']] >1)
   unset($array[$key]);
}

@ 的作用是防止 php 抛出错误。或者您可以编写更多代码来预定义 $array2 但这确实有效。

关于php - 如何从多维数组中删除重复项和原始数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39198616/

相关文章:

php - 在 linux 中升级 OpenSSL 后,php 中的 OpenSSL 和 curl 不更新

php - 使用 TCPDF 生成 PDF - 无法提取嵌入字体

arrays - 如何在数组中搜索字符串

java - 旋转二维数组 - 一个工作示例和一个损坏的示例(为什么?)

python - 按位置循环二维数组

c - 多维数组和指向具有一个 Typedef 的数组的指针

PHP:按名称打开压缩文件(不解压)

php - HTML 表单提交不发送任何数据

PHP 获取 url 中的 var1 + var2,例如 .php?=1something?=3

java - StringBuffer 的替换方法无法正常工作