2016-12-02 11 views
1

Ich mache ein Skript, um Daten von einigen VPS zu überwachen, die in einer MySQL-Datenbank gespeichert werden.Multidimensionales Array in PHP mit Schlüsseln

$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'] 
    ); 
} 

Ich mag würde Daten von Host-Namen Separase so kann ich es wie im folgenden Beispiel lesen:

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

ich bereits mit dem folgenden Code versucht (nur zum Testen), aber hat nicht funktioniert :

$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'] 
     ) 
    ); 
} 

fehlt mir nur die richtige Art und Weise und Syntax, es zu erreichen: X

Antwort

3

Jeder el

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

Uh, obwohl ich, dass ich bereits versucht, dass ich nach dem zweiten brakets vergessen haben müssen [ 'Site-Name'] ..: ement sollte als Sub-Array von 'sitename.com' hinzugefügt werden Aber es funktioniert! Danke :) –

2

die Sie interessieren,

while ($row = mysql_fetch_array($result)) { 
    $hostname = $row['hostname']; 
    $data[$hostname][] = array(
     'id' => $row['id'], 
     'loadavrg' => $row['load average'] 
    ); 
} 
+1

Was ist, wenn 'sitename.com' mehrere Einträge hat? –

+0

@SougataBose Ich denke, dass die Bearbeitung würde die genaue Anforderung behandeln –

+0

Ja, das ist noch Hilfe, die ich fragte, danke, aber Sie vermissen [] nach [$ Hostname] wenn ich nicht falsch bin, das ist, was ich bereits versucht und hat nicht funktioniert, weil ich es auch vermisst habe. –