VB.NET veya PHP bir çok boyutlu dizi oluşturmak için nasıl

2 Cevap ûnet

Ben yorum için kurulum bir veri seti var. Ben düzeyleri ve bir tür sütun var ama şimdi ben bir dizide bu olsun ya da anlamlı bir şekilde bir şekilde görüntülemek ya istiyorum:

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

Nasıl (Ben bir tercih var ve düzenli hem de kullanmayın) PHP veya VB.net bir diziye bu olsun.

Bu gibi (ben sadece kimlikleri belirterek duyuyorum görünen bir dizi istiyorum:

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

Veriler, bir SQL sonucudur.

2 Cevap

Not: Ben Altdizilim içeren, sen 'id' ek bir 'çocuk' tuşuna gerektiğini, onun belirtilmemiş olmasına rağmen, varsayarak yaşıyorum.

// 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'];

Bu çalışması için, tüm anne must düz liste çocuklarına önce görünür

Sen VB. Net bir Typed DataSet kullanmalısınız.

Yazılan veri neredeyse hiç kod ile bunu yapmak için izin ve 2-boyutlu bir dizi daha kullanmak çok daha kolay olacaktır.

Başlamak için, yeni bir VB.Net proje oluşturmak Typed DataSet eklemek ve yönergeleri izleyin.