2016-12-02 92 views
1

我製作一個腳本來監視來自某些VPS的數據,這些數據存儲在MySQL數據庫中。PHP中的多維數組與鍵

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

我想separase由主機名的數據,所以我可以像下面的示例閱讀:

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

我已經嘗試用下面的代碼(只是用於測試),但沒有奏效:

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

我只是缺少正確的方式和語法來實現它:X

回答

3

每埃爾EMENT應該作爲子陣的'sitename.com'

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

呃,不過,我覺得,我已經試過了,我一定是忘了[「站點名稱」]之後的第二brakets ..但是,它的工作原理!謝謝:) –

2

試試這個,

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

如果'sitename.com'有多個條目怎麼辦? –

+0

@SougataBose我猜編輯會處理確切的要求 –

+0

是的,這有助於我所要求的更多,謝謝,但是如果我沒有錯,你會在[$ hostname]之後錯過[],這就是我已經嘗試的沒有工作,因爲我也錯過了。 –