sql >> Database >  >> RDS >> Mysql

Een array maken met recursieve php van mysql

Ik vond deze code voor het groeperen van bovenliggende kindarrays geweldig. Ik heb in 4 diepten getest zonder enig probleem. Het is echter geen recursieve functie.

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

Het kan zijn dat u een aantal wijzigingen moet aanbrengen om het volledig te laten werken met uw situatie. Maar eigenlijk doorloopt het alle resultaten en combineert ze door middel van referentie.

Houd er rekening mee dat de uitgang $tree gegevenstype is een object en niet een array

Veel succes

UPDATE

U kunt de array als zodanig maken

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


  1. Opgeslagen T-SQL-procedure die meerdere id-waarden accepteert

  2. java.sql.SQLException:geen geschikte driver gevonden voor jdbc:microsoft:sqlserver

  3. Windows Azure VM-prestaties vergelijken, deel 1

  4. MySQL integer veld wordt geretourneerd als string in PHP