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

PHP/mySQL - wie man verschachtelte Zeilen in ein multidimensionales Array holt

Die Abfrage sollte in etwa so aussehen:

SELECT * FROM scales
INNER JOIN items ON scales.id = items.scale_id

Wenn Sie mit verschachtelten Schleifen iterieren möchten, müssen Sie diese Daten in ein Array ziehen - hoffentlich ziehen Sie sich nicht so weit zurück, dass es zu viel Speicher verschlingt.

$scales = array();

while ($row = mysql_fetch_assoc($data))
{
    if (!isset($scales[$row['scale_id']]))
    {
        $row['items'] = array();
        $scales[$row['scale_id']] = $row;
    }

    $scales[$row['scale_id']]['items'][] = $row;
}

Dann können Sie durchschleifen:

foreach ($scales as $scale)
{
    foreach ($scale['items'] as $item)
        ; //... do stuff
}

Hinweis:Dies ist etwas naiv, da sowohl $scale als auch $item Felder aus BEIDEN Tabellen enthalten ... wenn das ein Problem ist, müssen Sie die Zuweisungen in der obigen Schleife ändern, um nur die gewünschten Felder herauszuziehen.