我想创建看起来像这样的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);
答案 0 :(得分:1)
在for循环后移动打印,不要将$result
重新初始化为循环内的空数组。
也...
$cc = array();
$cc = count($cb);
其中一条线是多余的(可能是第一条)。
答案 1 :(得分:1)
您的代码有两个问题:
您看到的是输出结合了三个JSON字符串。由于代码中没有换行符,因此它将显示为一个大的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);
答案 2 :(得分:0)
在循环之前移动$result = array();
,甚至可能在if-block之前。你可以从那里处理代码。
答案 3 :(得分:0)
Highcharts使用数字数据,但您的数据是一个字符串数组。所以你需要通过parseFloat()解析它或者使用带有JSON_NUMERIC_CHECK的json_encode()来允许返回正确的JSON值。