2009-12-17 6 views
0

J'ai un ensemble de données qui est configuré pour les commentaires. Je niveaux et une colonne de tri, mais maintenant je voudrais obtenir ce soit dans un tableau ou l'afficher en quelque sorte d'une manière significative:Comment créer un tableau multidimensionnel dans VB.NET ou PHP

id comment   Parentid Level sortcol 
2  Test     NULL 0 0x00000002 
4  This is the Second  NULL 0 0x00000004 
5  First Reply    4  1 0x000000040005 
7  Reply to first reply 5  2 0x0000000400050007 
6  Second Reply   4  1 0x000000040006 
8  Reply to second comment 4  1 0x000000040008 

Comment puis-je obtenir ce dans un tableau en PHP ou VB.net (Je n'ai pas de préférence et j'utilise les deux régulièrement).

Je veux un tableau qui ressemble à ceci (je suis juste en précisant les ids:

array([0] 
     [id]=>2 
     [1] 
     [id]=>4 
      array([0] 
         [id]=>5 
         array([0] 
           [id]=>7 
          ) 
        [1] 
         [id]=>6 
        [2] 
         [id]=>8 
        ) 
     ) 

Les données sont un résultat SQL

Répondre

0

Remarque: Je suppose, malgré son caractère non spécifié, que vous avez besoin d'une clé 'enfants' en plus de 'id' pour contenir les sous-matrices.

// Skip list, to hold data as well as reference to nested list later 
$flat = array(); 
while ($row = mysql_fetch_assoc($result)) 
    $flat[$row['id']] = $row; 

$root = array(); 
foreach ($flat as $id => $row) 
{ 
    // Get reference to parent, or root if none set 
    if (!$row['Parentid']) 
     $parent =& $root; 
    else 
     $parent =& $flat[$row['Parentid']]['ref']; 

    if (!$parent['children']) 
     $parent['children'] = array(); 

    // Append new child 
    $parent['children'][] = array ('id' => $id); 
    // Add newly appended child to skip list 
    $flat[$id]['ref'] =& end ($parent['children']); 
} 

// Final nested list 
$nested = $root['children']; 

Pour que cela fonctionne, tous les parents must comparaissent devant leurs enfants dans la liste plate

0

Vous devez utiliser un Typed DataSet en VB .Net

..

Les DataSets dactylographiés vous permettront de le faire avec presque aucun code, et sont beaucoup plus faciles à utiliser qu'un tableau bidimensionnel

Pour commencer, créez un nouveau VB.N et projet, ajoutez un DataSet typé et suivez les instructions.

Questions connexes