2016-08-02 5 views
0

を使用して、GoogleのチャートのJSONを生成します。 https://developers.google.com/chart/interactive/docs/php_exampleは私がのガイド、次のよPHP

彼らはJSON例えばJSONスニペットを与えます。どのようにPHPでこの1つを構築するのですか?通常、json_encode()を使用して配列をjsonに変換するだけですが、今回はオブジェクトが必要なようです。誰かがこれを明確にすることはできますか?

JSONスニペット:

{ 
    "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}]} 
    ] 
} 

私がこれまで持っているもの:

$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表現を完了させる方法を知っている人はいますか?

編集: マイエコー出力:

{"cols":[{"id":"","label":"Topping","pattern":"","type":"string"},{"id":"","label":"Slices","pattern":"","type":"string"}],"rows":[[]]} 
+0

をそう何をしますか結果としてあなたのコードエコー? –

+2

PHPの連想配列はJSONオブジェクトに変換されますが、 'stdClass'は不要です – NDM

+0

@JulianKuchlbauer、申し訳ありません。質問を更新し、出力を – DaveLar

答えて

0

このコードは動作するはずです:

<?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

彼はこのようなことを学ぶつもりはありません... – NDM

+0

私は知っていますが、彼はコードを望んでいました。あなたのより精巧な答えに私の指摘をしてください。 –

2

をPHPの連想配列は、JSONのオブジェクトに変換しますので、stdClassは必要ありません。キーを値に与えていない、JSON配列を得るために

{ 
    'cols': [], 
    'rows': [], 
} 

$data = [ 
    'cols' => [], 
    'rows' => [], 
]; 

はになります:あなたはすでにいくつかのポインタですので、ここで構造体の80%を得た

$data = [ 
    'c' => [ 
     [ // <- no key here 
      'v' => 'Mushroom', 
      'f' => null 
     ], 
     [ // <- no key here 
      'v' => '3', 
      'f' => null 
     ], 
    ], 
    // ... 
]; 

はあなたのデータ行を与える:

{ 
    "c": [ // <- we got an actual array here because there was no key 
     { 
      "v":"Mushrooms", 
      "f":null 
     }, 
     { 
      "v":3, 
      "f":null 
     } 
    ] 
} 
+0

ああ、今話していることは分かっています。私はこの方法で配列を使うことができるかどうかはわかりませんでした。私はそれぞれの{}がオブジェクトである必要があると思った。アップアップされました! – DaveLar

+0

私はあなたが 'null''のように' null'を引用符で囲む必要があるでしょう。さもなければ、出力には何も得ません。 – RiggsFolly

+1

いいえ:引用符で囲むとJSONに 'null''という文字列が得られますnull定数です。 – NDM

関連する問題