0

我想创建如下所示的 JSON 数据

[{"name":"AS","data":["150","250","300"]},{"name":"JS","data":["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);
    }
}

我脚本的结果是

[{"name":"AS","data":["150","250","300"]}][{"name":"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);
4

4 回答 4

1

您的代码有两个问题:

  • 您在每次迭代时重新初始化数组
  • 您在每次迭代时打印 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);
于 2013-10-09T14:46:36.787 回答
1

在 for 循环之后移动打印,并且不要重新初始化为循环$result内的空数组。

还...

$cc = array();
$cc = count($cb);

其中一条是多余的(可能是第一条)。

于 2013-10-09T14:42:06.887 回答
0

移动$result = array();到循环之前,甚至可能在 if 块之前。您可能可以从那里处理代码。

于 2013-10-09T14:56:50.830 回答
0

Highcharts 使用数字数据,但您的数据是字符串数组。因此,您需要通过 parseFloat() 对其进行解析,或者将 json_encode() 与 JSON_NUMERIC_CHECK 一起使用,这允许返回正确的 JSON 值。

于 2013-10-10T10:01:41.537 回答