0

こんな感じのJSONデータを作りたい

[{"名前":"AS","データ":["150","250","300"]},{"名前":"JS","データ":["175","180" ,"210"]},{"名前":"MS","データ":["100","75","200"]}]

ここに私が作成したスクリプトがあります

$c = mysql_query("SELECT distinct nama FROM tcoba ORDER BY nama ASC"); 
while($ca = mysql_fetch_array($c))
{
    $cb[] = $ca['nama'];
}
$cc = array();
$cc = count($cb);
if(count($cb) > 1)
{
    for($i=0;$i<$cc;$i++)
    {
        $b = mysql_query("SELECT distinct nama, jumlah FROM tcoba WHERE nama = '$cb[$i]'");
        $rows = array();
        while($ba = mysql_fetch_array($b)) 
        {
            $rows['name'] = $ba[0];
            $rows['data'][] = $ba['jumlah'];
        }
        $result = array(); 
        array_push($result,$rows);
        print json_encode($result);
    }
}

私のスクリプトの結果は

[{"名前":"AS","データ":["150","250","300"]}][{"名前":"JS","データ":["175","180 ","210"]}][{"名前":"MS","データ":["100","75","200"]}]

見せたいものとまだ一致していない...

編集:仕事

$result = array(); 
for($i=0;$i<$cc;$i++)
{
    $b = mysql_query("SELECT distinct nama, jumlah FROM tcoba WHERE nama = '$cb[$i]'");
    $rows = array();
    while($ba = mysql_fetch_array($b)) 
    {
        $rows['name'] = $ba[0];
        $rows['data'][] = $ba['jumlah'];
    }

    array_push($result,$rows);

}print json_encode($result);
4

4 に答える 4

1

コードには次の 2 つの問題があります。

  • 反復ごとに配列を再初期化しています
  • 各反復でJSON文字列を出力しています

出力として表示されるのは、結合された 3 つの JSON 文字列です。コードに改行がないため、1 つの大きな JSON 文字列として表示されます。

コードは次のようになります。

$result = array(); // initialize the array
while($ba = mysql_fetch_array($b)) 
{
    $rows['name'] = $ba[0];
    $rows['data'][] = $ba['jumlah'];
    array_push($result,$rows);
}
print json_encode($result);
于 2013-10-09T14:46:36.787 に答える
0

ハイチャートは数値データを使用しますが、データは文字列の配列です。したがって、parseFloat() で解析するか、正しい JSON 値を返すことを可能にする JSON_NUMERIC_CHECK で json_encode() を使用する必要があります。

于 2013-10-10T10:01:41.537 に答える