我想创建看起来像这样的JSON数据
[{"名称":"AS","data":["150","250","300"]},{"name":"JS","data":[">175","180","210"]},{"name":"MS","data":["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","data":[">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);
将打印移动到 for 循环之后,并且不要将$result
重新初始化为循环内的空数组。
也。。。
$cc = array();
$cc = count($cb);
其中一行是多余的(可能是第一行(。
你的代码有两个问题:
- 您将在每次迭代时重新初始化数组
- 在每次迭代时打印 JSON 字符串
您看到的输出是三个 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);
将$result = array();
移动到循环之前,甚至可能在 if 块之前。您可能可以从那里处理代码。
Highcharts使用数字数据,但您的数据是一个字符串数组。因此,您需要通过parseFloat((来解析它,或者将json_encode((与允许返回正确的JSON值的JSON_NUMERIC_CHECK一起使用。