2014-10-17 49 views
-1

請參閱我的下列數組,我需要能夠刪除具有相同值的項目(例如,主要,次要等)是否有對現有數組執行此操作的方法通過PHP或更容易做到這一點之前項目插入到數組中?刪除具有相同值的數組中的項目

我見過array_unique功能,但不知道如果我可以使用它看起來是因爲它是一個多維數組?

Array 
(
    [0] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 19 
      [value] => Primary 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 0 
      [usageCount] => 
     ) 

    [1] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 20 
      [value] => Secondary 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 1 
      [usageCount] => 
     ) 

    [2] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 20 
      [value] => Secondary 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 1 
      [usageCount] => 
     ) 

    [3] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 21 
      [value] => Groups & Families 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 2 
      [usageCount] => 
     ) 

    [4] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 19 
      [value] => Primary 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 0 
      [usageCount] => 
     ) 

    [5] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 20 
      [value] => Secondary 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 1 
      [usageCount] => 
     ) 

    [6] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 21 
      [value] => Groups & Families 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 2 
      [usageCount] => 
     ) 

    [7] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 22 
      [value] => Adults 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 3 
      [usageCount] => 
     ) 

    [8] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 19 
      [value] => Primary 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 0 
      [usageCount] => 
     ) 

    [9] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 20 
      [value] => Secondary 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 1 
      [usageCount] => 
     ) 

    [10] => SelectAttributeTypeOption Object 
     (
      [error] => 
      [ID] => 21 
      [value] => Groups & Families 
      [th] => TextHelper Object 
       (
       ) 

      [displayOrder] => 2 
      [usageCount] => 
     ) 
) 
+0

這要看數據的來源,以及它是如何添加到陣列中。如果它來自DB,你很可能改變你的查詢這樣做.. – Naruto 2014-10-17 09:12:32

+1

爲什麼不從SQL語句解決這個問題,你需要添加的是'GROUP BY值' – 2014-10-17 09:12:36

回答

0

array_filter功能請看:

array_filter($array, function($elem) use ($value) { 
    return $elem['value'] !== $value; 
}); 

希望它能幫助。

0

試試這個:

$new = array_reduce(
    $old, 
    function ($result, $item) { 
     if (!in_array($item, $result)) { 
      $result[] = $item; 
     } 
     return $result; 
    } 
); 

但如果這些對象是牽強從數據庫,你最好的過濾你的結果與你有GROUP BY id或任何唯一的記錄標識符事先設定,爲Finciuc的Sergiu建議。

0

我希望這有助於

foreach($array as $row) { 
    if(!isset($output[$row['value']])) { 
     $output[$row['value']] = $row; 
    } 
} 

//reset array keys if you want //$output = array_values($output) 
相關問題