2012-06-27 4 views
0

J'ai un tableau:Tableaux associatifs: comment se débarrasser des doublons?

Array 
(
    [0] => Array 
     (
      [attribute_name] => Appliances 
      [attribute_value] => Washer 
     ) 

    [1] => Array 
     (
      [attribute_name] => Appliances 
      [attribute_value] => Dryer 
     ) 

    [2] => Array 
     (
      [attribute_name] => Appliances 
      [attribute_value] => Dishwasher 
     ) 

    [3] => Array 
     (
      [attribute_name] => Appliances 
      [attribute_value] => Microwave 
     ) 

    [4] => Array 
     (
      [attribute_name] => Console 
      [attribute_value] => Xbox360 
     ) 

    [5] => Array 
     (
      [attribute_name] => Console 
      [attribute_value] => PS3 
     ) 
) 

Je veux produire:

Array 
(
    [0] => Array 
     (
      [attribute_name] => Appliances 
      [attribute_value] => Washer, Dryer, Dishwasher, Microwave 
     ) 

    [1] => Array 
     (
      [attribute_name] => Console 
      [attribute_value] => Xbox360, PS3 
     ) 
) 

Comment cela est réalisé en PHP?

Voici mon code final basé sur la solution originale de @ andrewtweber:

http://codepad.org/E4WFnkbc

+4

[Qu'avez-vous essayé?] (http://whathaveyoutried.com) –

+0

Est-ce que le duplicat es viennent toujours par paires? Les doublons seront-ils toujours consécutifs? Y aura-t-il toujours des paires? – Ryan

+0

@MarkReed - Je n'ai jamais vu ce lien auparavant, je vais devoir l'utiliser à partir de maintenant. :) – Duniyadnd

Répondre

4
$new_arr = array(); 

foreach($arr as $data) { 
    if(!isset($new_arr[$data['attribute_name']])) { 
     $new_arr[$data['attribute_name']] = array(); 
    } 
    $new_arr[$data['attribute_name']][] = $data['attribute_value']; 
} 

Cela vous donnera

array('Appliances' => array('Washer', 'Dryer', 'Dishwasher')); 

http://codepad.org/m6l3je0H

+1

Cela a totalement fonctionné! J'ai eu un problème avec la partie is_array en lançant une erreur d'indexation alors j'ai juste utilisé isset à la place. J'ai posté un exemple qui rend également la sortie dans une chaîne de craps et de rire. –

+0

Ah bon point - probablement juste un avis non? Mais je mettrai à jour ma réponse au cas où quelqu'un d'autre le rencontrerait – andrewtweber

Questions connexes