Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析highcharts的json响应_Php_Parsing_Highcharts_Json - Fatal编程技术网

Php 解析highcharts的json响应

Php 解析highcharts的json响应,php,parsing,highcharts,json,Php,Parsing,Highcharts,Json,我需要你们帮忙。我试图将json响应解析为highcharts可以呈现为柱状图的内容。我找了又找,一点运气也没有 以下是呈现图表之前json数据的外观示例: [ [1,12], [2,5], [3,18], [4,13], [5,7], [6,4], [7,9], [8,10], [9,15], [10,22] ] $json = '{"col":["name","tot"],"grp":{"wkd":[["","0"],["id-1","0"],["id-2","0"],["id

我需要你们帮忙。我试图将json响应解析为highcharts可以呈现为柱状图的内容。我找了又找,一点运气也没有

以下是呈现图表之前json数据的外观示例:

[
[1,12],
[2,5],
[3,18],
[4,13],
[5,7],
[6,4],
[7,9],
[8,10],
[9,15],
[10,22]
]
$json       = '{"col":["name","tot"],"grp":{"wkd":[["","0"],["id-1","0"],["id-2","0"],["id-3","0"],["id-4","0"],["id-5","0"],["id-6","0"],["id-7","0"]]},"Spec":{}}';
$decoded    = json_decode($json);
$values     = $decoded->grp->wkd;

$i = 0;
foreach($values as $k=>$arr) {
    $id = $arr[0];
    if(!empty($id)) {
        $data[$i][]     = $i;
        $data[$i][]     = $arr[1];
        $cats[$i]       = $id;
        $i++;
    }
}
$data = json_encode($data);
$cats = json_encode($cats);
这就是我的json响应的样子:

{"col":["name","tot"],"grp":{"wkd":[["","0"],["id-1","0"],["id-2","0"],["id-3","0"],["id-4","0"],["id-5","0"],["id-6","0"],["id-7","0"]]},"Spec":{}}
我从响应中需要的唯一信息是id-1到7及其值

我使用curl发送一个对url的post请求,其中包含令牌和密码

这是代码的curl部分和json_解码:

$ch = curl_init($signedUrl);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json',
                                           'Accept-language: en-GB',
                                           'Content-type: application/json',                                                                                
                                           'Content-length: ' . strlen($data_string))); 

$json = curl_exec($ch);

print "RESPONSE BODY (as string (JSON)):<br/><br/>" . $json;
echo "<br><br>";

$data = json_decode($json, true);

curl_close($ch);
$ch=curl\u init($signedUrl);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLINFO_HEADER_OUT,TRUE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch,CURLOPT_HTTPHEADER,数组('Accept:application/json'),
'接受语言:en GB',
'内容类型:application/json',
'内容长度:'.strlen($data_string));
$json=curl_exec($ch);
打印“响应体(作为字符串(JSON)):

”$json; 回声“

”; $data=json_decode($json,true); 卷曲关闭($ch);
我不知道在json_解码后如何解析信息。我尝试了多个foreach字符串,但没有任何运气。 有人能帮我吗

问候
Philip

如果要分解对象的相关部分,循环,如果id已填充,则将其作为数据抓取。然后需要对其重新进行json_编码,以便在图表中使用:

[
[1,12],
[2,5],
[3,18],
[4,13],
[5,7],
[6,4],
[7,9],
[8,10],
[9,15],
[10,22]
]
$json       = '{"col":["name","tot"],"grp":{"wkd":[["","0"],["id-1","0"],["id-2","0"],["id-3","0"],["id-4","0"],["id-5","0"],["id-6","0"],["id-7","0"]]},"Spec":{}}';
$decoded    = json_decode($json);
$values     = $decoded->grp->wkd;

$i = 0;
foreach($values as $k=>$arr) {
    $id = $arr[0];
    if(!empty($id)) {
        $data[$i][]     = $i;
        $data[$i][]     = $arr[1];
        $cats[$i]       = $id;
        $i++;
    }
}
$data = json_encode($data);
$cats = json_encode($cats);
如果需要的话,这包括一个构建类别数组的部分。如果没有,请省略

此例程的输出为:

$data:

[[0,"0"],[1,"0"],[2,"0"],[3,"0"],[4,"0"],[5,"0"],[6,"0"]] 
$cats:

["id-1","id-2","id-3","id-4","id-5","id-6","id-7"]

如果你是图书馆不可知论者,看看jquery的函数吧,我想我们需要更多关于页面和图表组成的信息。您这样做是为了获取一些数据,以便在页面呈现时加载图表吗?或者,在呈现该PHP脚本后,您是否通过AJAX调用从页面调用该脚本?你能缩小一下你的应用程序,给我们更多的代码来显示你的图表是如何创建的以及你是如何使用你的数据的吗?现在这看起来像是一个PHP问题,但答案可能取决于它的使用方式。