2010-01-23 5 views
1

Je récupère des données hiérarchiques à partir d'une base de données Oracle en utilisant la fonction «connexion par».Résultat SQL au tableau multidimensionnel PHP

Je remplir un tableau PHP avec le résultat de ma requête à la recherche comme:

while ($row_branches = oci_fetch_array($query_tree)) { 
    $tree[] = array(
    'id' => $row_branches['ID'] 
    , 'parent' => $row_branche['PARENT'] 
    , 'data' => htmlspecialchars($row_branches['NAME']) 
    , 'level' => $row_branches['LEVEL'] 
    ); 
} 

Le champ ID est l'identifiant unique de la ligne Le MÈRE champ est l'ID du parent Le données sur le terrain est le nom de l'élément Le champ LEVEL est le niveau de la ligne dans la hiérarchie.

Je préfère avoir un tableau multidimensionnel car mon but est d'utiliser la fonction PHP json_decode().

La profondeur de la hiérarchie n'est jamais connue à l'avance.

Ma question est la suivante:

Comment pourrais-je remplir un tableau multidimensionnel avec le résultat de ma requête?

Merci mille fois d'avance pour vos réponses.

+0

Ceci est un doublon: http://stackoverflow.com/questions/2053719/php-recreate-array-from-flat-to-multidimensional –

+0

Merci pour vos réponses Mark. J'ai peut-être manqué quelque chose parce que je suis déjà passé par le message que vous avez suggéré et je réussis à générer un tableau multidimensionnel mais mon problème est plus lié au format correct pour être utilisé avec la fonction php json_encode() pour pouvoir passer le données à une application AJAX. –

Répondre

2

essayer cette

function adj_tree(&$tree, $item) { 
    $i = $item['ID']; 
    $p = $item['PARENT']; 
    $tree[$i] = isset($tree[$i]) ? $item + $tree[$i] : $item; 
    $tree[$p]['_children'][] = &$tree[$i]; 
} 

$tree = array(); 
while ($row = oci_fetch_array($query_tree)) { 
    adj_tree($tree, $row); 
+0

Merci pour votre réponse rapide. Il est utile et très astucieux mais malheureusement, pour une raison quelconque, je n'arrive pas à obtenir le bon format de tableau à utiliser avec la fonction PHP json_encode(). Mais merci encore pour votre aide, je vais continuer à creuser. –

Questions connexes