Search code examples
phparraysmultidimensional-arraygroupingresultset

Group query result set data by column value while looping


I making a script to display data from some VPSs, which is being stored in a MySQL database.

$result = mysql_query("SELECT * FROM data");
$data = array();
while ($row = mysql_fetch_array($result)) {
    $data[] = array(
             'id' => $row['id'],
             'hostname' => $row['hostname'],
             'loadavrg' => $row['load average']
    );
}

I would like to separate data by hostnames so I can read it like the following example:

foreach ($data['sitename.com'] as $d)
    echo $d['loadavrg'];

I already tried with the following code (just for testing), but didn't work:

$result = mysql_query("SELECT * FROM data WHERE hostname='sitename.com'");
$data = array();
while ($row = mysql_fetch_array($result)) {
    $data[] = array(
        'sitename.com' => array(
            'id' => $row['id'],
            'loadavrg' => $row['load average']
        )
    );
}

I'm just missing the right way and syntax to achieve it.


Solution

  • Every element should be added as subarray of 'sitename.com':

    while ($row = mysql_fetch_array($result)) {
        $data['sitename.com'][] = array(
            'id' => $row['id'],
            'loadavrg' => $row['load average']
        );
    }