首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP为Google图表生成JSON

使用PHP为Google图表生成JSON
EN

Stack Overflow用户
提问于 2016-08-02 17:34:23
回答 2查看 66关注 0票数 0

我正在遵循以下指南:https://developers.google.com/chart/interactive/docs/php_example

他们给出了一个json示例的json代码片段。你是怎么用php构建这个的呢?通常只需要使用json_encode()将数组转换为json,但这次似乎还需要一个对象。有人能澄清这一点吗?

json代码片段:

代码语言:javascript
复制
{
  "cols": [
    {"id":"","label":"Topping","pattern":"","type":"string"},
    {"id":"","label":"Slices","pattern":"","type":"number"}
  ],
  "rows": [
    {"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
    {"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
  ]
}

到目前为止,我所拥有的:

代码语言:javascript
复制
$obj = new stdClass();
$obj->cols= array(
    array("id"=>"", "label"=>"Topping", "pattern"=>"", "type"=>"string"), 
    array("id"=>"", "label"=>"Slices", "pattern"=>"", "type"=>"string"));
$obj->rows = array(
    array()
);

echo json_encode($obj);

有没有人知道如何完成这个php表示?

编辑:我的回声输出:

代码语言:javascript
复制
{"cols":[{"id":"","label":"Topping","pattern":"","type":"string"},{"id":"","label":"Slices","pattern":"","type":"string"}],"rows":[[]]}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-02 17:49:45

下面的代码应该可以工作:

代码语言:javascript
复制
<?php
$obj = array("cols"=>array(
    array("id"=>"", "label"=>"Topping", "pattern"=>"", "type"=>"string"), 
    array("id"=>"", "label"=>"Slices", "pattern"=>"", "type"=>"string")),
    "rows"=>array(
    array("c"=>array(array("v"=>"Mushrooms", "f"=>null), array("v"=>3, "f"=>null))),
    array("c"=>array(array("v"=>"Onions", "f"=>null), array("v"=>1, "f"=>null))),
    array("c"=>array(array("v"=>"Olives", "f"=>null), array("v"=>1, "f"=>null))),
    array("c"=>array(array("v"=>"Zucchini", "f"=>null), array("v"=>1, "f"=>null))),
    array("c"=>array(array("v"=>"Pepperoni", "f"=>null), array("v"=>2, "f"=>null))),
    )
);

echo json_encode($obj);
?>
票数 0
EN

Stack Overflow用户

发布于 2016-08-02 17:50:28

PHP关联数组将转换为JSON中的对象,因此不需要stdClass。你已经得到了80%的结构,所以这里有几点建议:

代码语言:javascript
复制
$data = [
    'cols' => [],
    'rows' => [],
];

将导致:

代码语言:javascript
复制
{
    'cols': [],
    'rows': [],
}

为了获得JSON数组,不要给这些值提供键:

代码语言:javascript
复制
$data = [
    'c' => [
        [ // <- no key here
            'v' => 'Mushroom', 
            'f' => null
        ],
        [ // <- no key here
            'v' => '3', 
            'f' => null
        ],
    ],
    // ...
];

将为您提供一个数据行:

代码语言:javascript
复制
{
    "c": [ // <- we got an actual array here because there was no key
        {
            "v":"Mushrooms",
            "f":null
        },
        {
            "v":3,
            "f":null
        }
    ]
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38716776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档