2011-03-21 3 views
0

Je rencontre des problèmes pour accéder efficacement à certaines données de la baie et j'ai besoin de quelques conseils.accéder à un tableau multidimensionnel

que je fais un appel de base de données qui renvoie des données similaires à ceci:

+------+------------+------------+-----------+ 
| id | key  | part_num | value | 
+------+------------+------------+-----------+ 
| 1 | application| p1   |   1| 
| 2 | application| p1   |   2| 
| 3 | capsule | p1   |   3| 
| 3 | capsule | p1   |   4| 
| 4 | instrument | p1   |   5| 
| 5 | instrument | p1   |   6| 
| 5 | instrument | p1   |   7| 
| 1 | application| n8   |   1| 
| 2 | application| n8   |   2| 
| 3 | capsule | n8   |   3| 
| 3 | capsule | n8   |   4| 
| 4 | instrument | n8   |   5| 
+------+------------+------------+-----------+ 

Notez le part_num

Je ne ai vraiment besoin de la part_num et la valeur de ce (que je reçois), mais je voudrais le grouper en PHP par le numéro de pièce.

Par exemple quelque chose d'aussi simple que l'impression ceci:

Part: (p1) 
Values: 1, 2, 3, 4, 5, 6, 7. 
Part: (n) 
Values: 1, 2, 3, 4, 5. 

S'IL VOUS PLAÎT NOTE: Je ne peux pas le faire avec MySQL comme j'utilise ces données pour d'autres choses et je ne veux pas faire plusieurs demandes de base de données.

J'espère que j'ai fait assez clair, laissez-moi savoir si plus d'informations sont nécessaires.

Répondre

1

En supposant que vos données actuelles est dans la variable $data vous pouvez parcourir les lignes et créer un nouveau tableau $partnums.

$partnums = array(); 

foreach($data as $row) { 
    if (!isset($partnums[$row['part_num']])) 
     $partnums[$row['part_num']] = array(); 
    $partnums[$row['part_num']][] = $row['value']; 
} 

Maintenant $partnums est un tableau qui a pour clés ... dont chacune fait référence à un tableau de valeurs de la part_num associés à cette part_num.

Pour imprimer les valeurs comme vous l'avez suggéré:

foreach($partnums as $partnum => $values) { 
    printf('Part: (%s)'.PHP_EOL, $partnum); 
    printf('Values: %s.'.PHP_EOL, implode(', ', $values)); 
} 
+0

Salut Jacob, merci pour cela. Je suis en quelque sorte ce que vous dites mais mon tableau n'est pas tout à fait correct, il ressemble à 'Array ([p1] => 7 [n8] => 5') Désolé de sembler naïf, je suis Je ne sais pas comment maintenant itérer à travers chaque valeur distincte – dangermark

+0

Ah !! Avez-vous juste édité ceci? Je n'ai pas vu cette dernière section :) – dangermark

+0

Je crois que vous avez peut-être regardé la solution précédente de RDL avant de l'éditer. – Jacob

0

Vous utiliseriez une boucle pour parcourir les données. Quelque chose comme ceci:

$results = [your query and fetch] 

$array = array(); 
foreach ($results as $rs) 
    $array[$rs['part_num']][] = $rs['value']; 
Questions connexes