PHP从多维数组中删除重复的值

14
我们可以使用array_unique()函数从单个多维数组中删除重复的条目。但是,是否可以用于多维数组?我尝试过,但并不起作用!
以下是这个数组的样子:
Array (
    [0] => Array ( [0] => 1001 [1] => john [2] => example )
    [1] => Array ( [0] => 1002 [1] => test [2] => dreamz )
    [2] => Array ( [0] => 1001 [1] => john [2] => example )
    [3] => Array ( [0] => 1001 [1] => example [2] => john )
    [4] => Array ( [0] => 1001 [1] => john [2] => example )
)

有人可以帮我一下吗?...


请问如何在PHP中移除多维数组中的重复值?请参考以下链接:https://dev59.com/OXVC5IYBdhLWcg3wZwNT 或者 https://dev59.com/73I-5IYBdhLWcg3wbHq-。 - Vaibhav Gupta
1
所有像 array_unique() 这样的函数都只是一些对于非常简单的循环语法糖。你完全可以花很少的力气自己做到这一点。尽量更加狡猾一些。编程不总是简单的复制粘贴,有时候需要更加智能的工作。 - Your Common Sense
1
这个更近的问题有更好的解决方案:https://dev59.com/OXVC5IYBdhLWcg3wZwNT - 4levels
2个回答

40

用户在array_unique页面上的评论对此有所启示。在这些评论中,您很可能会发现一些隐藏的宝石 - 这是非常方便的文档。

只需快速浏览,即可了解如何从多维数组中删除重复项:

<?php
function super_unique($array)
{
  $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

  foreach ($result as $key => $value)
  {
    if ( is_array($value) )
    {
      $result[$key] = super_unique($value);
    }
  }

  return $result;
}
?>

Russell,我能够使用这个函数去除重复项,但是有一个问题,如何重新索引数组内的数组...希望你能给予指导。 - Brownman Revival
1
一个更简洁的解决方案,取自https://dev59.com/OXVC5IYBdhLWcg3wZwNT:$input = array_map("unserialize", array_unique(array_map("serialize", $input))); - 4levels

3

您可以将子数组(通过 serialize())序列化为一个新数组,然后在该数组上运行 array_unique(),最后反序列化得到一组不重复的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接