2011-09-21 4 views
2

Je cherche une façon élégante de Dedupe un tableau 5 dimensions comme thaht:array_unique tableau 5 dimensions 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) 
          ) 
        ) 
      ) 
    ) 
) 

Est-ce possible ou devrais-je utiliser foreach 5 imbriqué?

+0

Cette fois-ci utiliser une boucle de 5 imbriqué. Pour la prochaine fois, envisager des alternatives pour ne pas vous mettre dans cette situation. – Jon

+0

écrire une fonction récursive et foreach élément de tableau qui n'est pas un autre tableau faire un 'array_unique' – rabudde

Répondre

2

puisque array_unique ne fonctionne pas avec les tableaux multidimensionnels.

vous devez écrire votre propre logique de le faire avec pourrait être:

  • beaucoup de boucles imbriquées, comme vous l'avez dit
  • ou une version recursice de array_unique comme celui-ci (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

Oh merci, je n'ai pas demandé beaucoup =) mais c'est vraiment sympa^^ –

+0

Pourquoi cette solution n'est pas incluse comme builtin array_unique_recursive ? – emanuele