有关array_unique的问题

时间:2010-08-10 05:56:07

标签: php arrays array-unique

print_r($tokens);
$tokens = array_unique($tokens);
print_r($tokens);

提供以下输出:

Array
(
    [0] => Array
        (
            [Class_ID] => 32709
        )

    [1] => Array
        (
            [Class_ID] => 34682
        )

    [2] => Array
        (
            [Class_ID] => 34818
        )

)
Array
(
    [0] => Array
        (
            [Class_ID] => 32709
        )

)

我不希望它用array_unique改变任何东西,因为Class_ID值是不同的......什么了?

2 个答案:

答案 0 :(得分:3)

来自documentation

  

注意:当且仅当

时,才认为两个元素相等
(string) $elem1 === (string) $elem2
     

用文字表示:当字符串表示相同时。将使用第一个元素。

您的所有元素toString均为Array

答案 1 :(得分:0)

从php.net找到一个在多维数组上执行array_unique的函数:

function super_unique($array) //array unique for multi 
{
  $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;
}