2010-08-10 147 views
0
print_r($tokens); 
$tokens = array_unique($tokens); 
print_r($tokens); 

提供了以下的輸出:麻煩與array_unique

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

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

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

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

) 

我不希望它是與array_unique改變任何東西,因爲值類標識碼是不同的...怎麼了?

回答

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

documentation來自:

注:兩個元件被認爲是相等當且僅當

(string) $elem1 === (string) $elem2 

在話:當字符串表示是相同的。第一個元素將被使用。

您所有的元素toString都是Array

+0

啊,不知道。我通過在sort_flag參數中指定SORT_NUMERIC來解決它。 – babonk 2010-08-10 06:00:07

+0

這是正確的,你需要用'in_array()'遍歷它們來查看你是否有重複。 – alex 2010-08-10 06:00:18

+0

@alex,見上面我可以得到它的參數 – babonk 2010-08-10 06:00:59