2011-09-21 22 views
2

我正在尋找一個優雅的方式來重複數據刪除一個5維數組一樣thaht:array_unique 5維數組PHP

Array 
(
    [LOADERS] => Array 
    (
     [S130] => Array 
      (
       [527311001 & Above] => Array 
        (
         [MAINTENANCE ITEMS] => Array 
          (
           [0] => MAINTENANCE ITEMS 
           [1] => SCHEDULED MAINTENANCE ITEMS (50 HOUR) 
           [2] => SCHEDULED MAINTENANCE ITEMS (250 HOUR) 
           [3] => SCHEDULED MAINTENANCE ITEMS (1000 HOUR) 
           [4] => SCHEDULED MAINTENANCE ITEMS (1000 HOUR) 
           [5] => MAINTENANCE ITEMS 
           [6] => SCHEDULED MAINTENANCE ITEMS (50 HOUR) 
           [7] => SCHEDULED MAINTENANCE ITEMS (250 HOUR) 
           [8] => SCHEDULED MAINTENANCE ITEMS (500 HOUR) 
           [9] => SCHEDULED MAINTENANCE ITEMS (1000 HOUR) 
          ) 
        ) 
      ) 
    ) 
) 

這是可能的,或者我應該使用5嵌套的foreach?

+0

這一次使用5嵌套循環。下次考慮替代方案不要把自己置於這種情況下。 – Jon

+0

寫一個遞歸函數和數組的元素的foreach這是不是另一個數組做一個'array_unique' – rabudde

回答

2

因爲array_unique不多維數組。

你必須編寫自己的邏輯來做到這一點可能是:

  • 很多嵌套循環,像你說的
  • 或array_unique的recursice版本是這樣的(taken from the documentation) :

    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; 
    } 
    
+0

哦謝謝你,我也沒問那麼多=),但它是非常好的^^ –

+0

爲什麼不包含此解決方案內置array_unique_recursive ? – emanuele