2011-11-01 4 views
0

j'ai cette situation:comment organiser des tableaux en PHP?

foreach ($test as $keys => $val) {  
print_r($val); echo '<br>'; 
} 

Array ([NAME] => John [ps_date] => 20111031 [amount] => 119.94) 
Array ([NAME] => John [ps_date] => 20111031 [amount] => 119.94) 
Array ([NAME] => John [ps_date] => 20111031 [amount] => 69.90) 
Array ([NAME] => Doe [ps_date] => 20111031 [amount] => 119.94) 
Array ([NAME] => Doe [ps_date] => 20111101 [amount] => 69.90) 
Array ([NAME] => Doe [ps_date] => 20111031 [amount] => 199.50) 

ce que je veux faire est de les organiser de sorte:

Array ([NAME] => John 
      array([ps_date] => 20111031 [amount] => 119.94) 
      array([ps_date] => 20111031 [amount] => 119.94) 
      array([ps_date] => 20111031 [amount] => 69.90) 
Array ([NAME] => Doe 
      array([ps_date] => 20111031 [amount] => 119.94) 
      array([ps_date] => 20111101 [amount] => 69.90) 
      array([ps_date] => 20111031 [amount] => 199.50) 

des idées?

grâce

+0

Quelle est votre code actuel php? –

+0

code édité avec la boucle de foreach – Patrioticcow

Répondre

0
function arrange_array($array) { 
    $result = Array(); 
    foreach($array as $values) { 
     $name = $values['NAME']; 
     unset($values['NAME']); 
     if(!is_array($result[$name])) $result[$name] = Array();     
     $result[$name][] = $values; 
    } 
    return $result; 
} 
+0

mine solution est 4 fois plus rapide que la solution de deceze - [démo] (http://codepad.viper-7.com/bmdWsp). Et il ne produira pas d'erreurs de notification – Peter

+0

merci à tous, enfin cela fonctionne – Patrioticcow

+0

@Peter Bien sûr, si exécuté sur des tableaux géants des centaines de fois, il fait une différence significative. Dans des circonstances normales, je préférerais ma version pour la brièveté cependant. Et cela ne produit aucun avis non plus. – deceze

0
$arranged = array(); 
foreach ($test as $val) { 
    $arranged[$val['NAME']][] = array_diff_key($val, array('NAME' => null)); 
    $arranged[$val['NAME']] += array_intersect_key($val, array('NAME' => null)); 
} 
0
$result = array(); 
foreach ($values as $item) { 
    $result[$item['NAME']][] = array('ps_date' => $item['ps_date'], 'amount' => $item['amount']; 
}