Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen eines Arrays mit rekursivem PHP aus mysql

Ich fand diesen Code zum Gruppieren von Eltern-Kind-Arrays erstaunlich. Ich habe in 4 Tiefen ohne irgendwelche Probleme getestet. Es ist jedoch keine rekursive 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.

Möglicherweise müssen Sie einige Änderungen vornehmen, damit es vollständig mit Ihrer Situation funktioniert. Aber im Grunde durchläuft es alle Ergebnisse und kombiniert sie per Referenz.

Beachten Sie, dass die Endung $tree Datentyp ist ein object und kein array

Viel Glück

AKTUALISIEREN

Sie können das Array als solches erstellen

$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 
}