2

我发现了很多关于这个的问题和答案,但不符合我的需要。我认为这与这个问题相似/相同,但不知道为什么不适合这种情况。所以请在判断重复之前尝试一下,谢谢。

数组源

$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. 如何从 PHP 中的多维数组中删除重复值
  2. PHP从多维数组中删除重复值

谢谢你们

4

1 回答 1

3
$seen = array();
foreach($avar as &$entry){
    $entry = array_unique(array_diff($entry,$seen));
    $seen = array_merge($entry,$seen);
}
unset($entry);
var_dump($avar);
于 2013-05-15T01:54:35.713 回答