2011-05-18 3 views
2

Je n'arrive pas à comprendre comment créer un parent, un enfant (par un identifiant) qui sera placé dans un nouveau tableau à partir d'un tableau (chargé par une base de données).Création d'un tableau produisant des parents et des enfants d'enregistrements

je en ai besoin d'être comme ceci:

+- Parent - ID: 4 
| 
+---- Child record 
+---- Child record <-- these children have a parent_id of 4 
+---- Child record 
| 
+- Parent - ID: 5 
| 
+---- Child record 
+---- Child record 
+---- Child record 
+---- Child record <-- these children have a parent_id of 5 
+---- Child record 
| 
+- Parent - ID: 7 
| 
+---- Child record 
+---- Child record <-- these children have a parent_id of 7 
+---- Child record 

Et ainsi de suite, l'enregistrement chargé de la base de données ressemble à ceci:

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [info] => this is a child, since sub is 1 and parent_id contains a number 
      [sub] => 1 
      [parent_id] => 4 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [info] => this is a parent, since sub is 0 and parent_id does not contain a number 
      [sub] => 0 
      [parent_id] => 
     ) 

    [2] => Array 
     (
      [id] => 1 
      [info] => this is a child, since sub is 1 and parent_id contains a number 
      [sub] => 1 
      [parent_id] => 4 
     ) 

.... more records 

Le SQL est commandé en mode ascendant par la ligne id, le nouveau tableau contenant les parents et l'enfant des enregistrements à quoi il sert essentiellement.

+0

Désolé si je ne fais pas de sens, je suis fatigué et s'il vous plaît si vous avez besoin de clarifications, je vais ajouter plus. – MacMac

+0

Désolé, cela n'a pas de sens. Vous essayez de créer le tableau à partir d'une requête de base de données? Ou vous avez une autre structure de données que vous voulez convertir en PHP? – Cfreak

+0

En fait, quand j'ai regardé votre question plus en profondeur, j'ai remarqué le cas bizarre où une information est un parent, comment aimeriez-vous aborder ce que vous aimeriez que l'info soit associée aux enfants? –

Répondre

2
foreach($dbArray as $row) 
{ 
    if($row['parent_id'] != "") 
    { 
     $parentArray[$row['parent_id']][]['child'] = $row['info']; 

    } 
    else 
    { 
     $parentArray[$row['id']]['parent'] = $row['info']; 
    } 

} 

c'est là l'ID parent est la clé pour le tableau de l'enfant d'info Le tableau résultant ressemblerait à quelque chose comme ça

Array(
/*parent id*/ 
    [0]=>Array(
     [parent] => //whatever info 
     [0] => Array(
       [child]=> //whatever child info 
        ) 

      ) 
    )  
+0

Désolé, pourriez-vous expliquer, fournir plus de code, s'il vous plaît. – MacMac

+0

Ça a l'air bien, mais je crois que l'OP veut l'enregistrement de l'enfant entier, pas seulement l'attribut info. –

+0

voulez-vous toutes les informations sur les parents et toutes les informations sur les enfants dans le tableau? –

Questions connexes