Jeg syntes, at denne kode til gruppering af forældreunderordnede arrays var fantastisk. Jeg har testet i 4 dybder uden problemer. Det er dog ikke en rekursiv funktion.
$tree = null;
foreach($results as $result)
{
$thisref = &$refs->{$result['id']};
foreach($result as $k => $v)
{
$thisref->{$k} = $v;
}
if ($result['parentId'] == 0) {
$tree->{$result['id']} = &$thisref;
} else {
$refs->{$result['parentId']}->children->{$result['id']} = &$thisref;
}
}
$tree; // contains the newly sorted tree.
Du skal muligvis lave nogle ændringer, for at det fuldt ud skal fungere med din situation. Men grundlæggende går den gennem alle resultaterne og kombinerer dem ved reference.
Bemærk, at slutningen $tree
datatypen er et object
og ikke et array
Held og lykke
OPDATERING
Du kan oprette arrayet som sådan
$query = "SELECT * FROM pB_test ORDER BY parentId ASC";
$dbresult = mysql_query($query) or die ('Database Error (' . mysql_errno() . ') ' . mysql_error());
$results = array();
while($row=mysql_fetch_assoc($dbresult))
{
$results[]=$row
}