2

I am looking for an elegant way to dedupe a 5-dimensional array like thaht :

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)
                            )
                    )
            )
    )
)

Is this possible or should I use 5-nested foreach ?

Raphaël
  • 1,141
  • 3
  • 18
  • 32
  • This time use a 5-nested loop. For next time, consider alternatives to not put yourself in this situation. – Jon Sep 21 '11 at 13:51
  • write a recursive function and foreach element of array which isn't another array do an `array_unique` – rabudde Sep 21 '11 at 13:51

1 Answers1

2

since array_unique doesn't work with multidimensional arrays.

you'll have to write your own logic to do this with could be:

  • a lot of nested loops, like you said
  • or a recursice version of array_unique like this (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;
    }
    
oezi
  • 51,017
  • 10
  • 98
  • 115