PHP从多维数组中删除重复值和完全UNIQUE

时间:2013-05-15 01:46:14

标签: php multidimensional-array

我发现了很多问题和答案,但不符合我的需要。 我认为它与this question类似/相同,但不知道为什么不为此案件工作。所以请在判断重复之前先试试,谢谢。

数组源

$avar = array(
0 => array(1,2,3,4,5,6,7,8,9),
1 => array(10,11,12,13,14,15,16,17,7,8,9,10),
23 => array(21,22,23,4,5,6,7,11,12,13,14,15,21));

期望的结果

$avar = array(
0 => array(1,2,3,4,5,6,7,8,9),
1 => array(10,11,12,13,14,15,16,17),
23 => array(21,22,23));

PHP脚本

<?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;
}

$result = super_unique($avar);  
echo "<pre>";
print_r($result);

?>

类似的问题与答案,但没有解决我的情况:

  1. How to remove duplicate values from a multi-dimensional array in PHP
  2. PHP remove duplicate values from multidimensional array
  3. 谢谢大家

1 个答案:

答案 0 :(得分:3)

$seen = array();
foreach($avar as &$entry){
    $entry = array_unique(array_diff($entry,$seen));
    $seen = array_merge($entry,$seen);
}
unset($entry);
var_dump($avar);