sql >> Database >  >> RDS >> Mysql

PHP/mySQL - hoe geneste rijen in een multidimensionale array op te halen

De zoekopdracht zou er ongeveer zo uit moeten zien:

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

Als je wilt herhalen met geneste lussen, moet je deze gegevens in een array opnemen - hopelijk trek je niet zoveel terug dat het te veel geheugen opslokt.

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

Dan kun je doorlopen:

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

Opmerking:dit is enigszins naïef omdat $scale en $item beide velden uit BEIDE tabellen zullen bevatten... als dat een probleem is, moet u de toewijzingen in de bovenstaande lus wijzigen om alleen de gewenste velden eruit te halen.



  1. Hoe tabelvariabele te gebruiken in een dynamische SQL-instructie?

  2. MySQL-query - records ophalen op basis van de huidige datum

  3. Proberen opgeslagen procedures te 'aanroepen' met CodeIgniter

  4. Dagelijkse tellingen krijgen voor evenementen die niet elke dag plaatsvinden