2016-12-02 11 views
1

MySQLデータベースに格納されているいくつかのVPSからのデータを監視するためのスクリプトを作成しました。キー付き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

、これを試してみてください。..しかし、それは動作します!ありがとう:) –

2

は、私はすでに私は[「サイト名」]の後の第2 braketsを忘れてしまっていなければならない、ということしようとしたこと、しかし、ええと

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]私もそれを見逃していたので働かなかった。 –