2014-03-12 62 views
-1

我有這個下面的數組:刪除所有重複的元素與array_unique PHP

Array 
(
    [1] => Array 
     (
      [0] => 2013-07 
      [1] => 4 
      [2] => 4 
      [3] => 3060 
      [4] => 1 
     ) 

    [2] => Array 
     (
      [0] => 2013-07 
      [1] => 270 
      [2] => 757 
      [3] => 13812810 
      [4] => 4 
     ) 

,我想刪除所有重複的元素,並用它代替$month[1][4]總和:

$result = array_reduce($month, function($cur, $x) 
{ 
return $cur + $x[4]; 
}, 0); 
$month = array_unique($month); //<---- Exception 
$month[1][4]=$result; 

它工作正常但它顯示我這個例外Notice: Array to string conversion! 我該如何防止這種情況發生?

感謝

+3

什麼行是例外? –

+0

編輯我的帖子!抱歉! – SpencerX

回答

1

快速解答:用途:

$unique = array_unique($a, SORT_REGULAR); 
    // OR  
$unique = array_map('unserialize', array_unique(array_map('serialize', $a))); 

說明 這個問題是有關,因爲您使用的是多維數組,array_unique()使用使用字符串轉換離子比較值找到唯一值前:

注意:有兩個因素被認爲是平等的,當且僅當(string) $elem1 === (string) $elem2。用詞表示:當字符串表示是相同的。第一個元素將被使用。

陣列將始終轉換爲「陣列」,它強制轉換爲字符串時:

$unique = array_unique($a, SORT_REGULAR); 

var_dump("Array" === (string) array()); 

可以通過在array_unique第二參數指定SORT_REGULAR模式解決這個

或者,如果這不起作用,請通過serializing之前的陣列和unserializing它調用array_unique後找到唯一值:

$unique = array_map('unserialize', array_unique(array_map('serialize', $a))); 
-1

這是你所需要的:

$month= array_unique($month, SORT_REGULAR); 
+0

這就是他所嘗試的,並打印了通知。 – Barmar

+0

$ month = array_unique($ month,SORT_REGULAR);這是你需要的 –