0

PHP5 を使用して、次のような JSON 応答を出力する必要があります。

{"success": true, "years": [{"yearnumber": 2012},{"yearnumber": 2013},...]}

私は次のようになりました:

$rt = array();
$rt["success"] = true;
$rt["years"] = array();
for ($i=date('Y') ; $i < (date('Y')+21) ; $i++) {
     $rt['years'][]= 'yearnumber:'.$i;
}
echo json_encode($rt);

もちろん、これは私の目標を達成するための適切な方法ではありません。また、明らかに望ましい結果が得られません。

私はPHPプログラミングにかなり慣れていないので、ここで少しプッシュすることができます. ありがとう。

4

2 に答える 2

3

これを取得するには(あなたが望むものに最も近い有効なJSON):

{"success":true, "years":[2012,2013,...]}

以下を使用できます。

$rt = array();
$rt["success"] = true;
$rt["years"] = array();
for ($i=intval(date('Y')) ; $i < (date('Y')+21) ; $i++) {
     $rt['years'][]= $i;
}
echo json_encode($rt);
//{"success":true,"years":[2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032]}

為に"years": [{"yearnumber": 2012}, {"yearnumber": 2013}]

以下を使用できます。

$rt = array();
$rt["success"] = true;
$rt["years"] = array();
for ($i=intval(date('Y')) ; $i < (date('Y')+21) ; $i++) {
     $rt['years'][]= array("yearnumber" => $i);
}
echo json_encode($rt);
//{"success":true,"years":[{"yearnumber":2012},{"yearnumber":2013},{"yearnumber":2014},{"yearnumber":2015},{"yearnumber":2016},{"yearnumber":2017},{"yearnumber":2018},{"yearnumber":2019},{"yearnumber":2020},{"yearnumber":2021},{"yearnumber":2022},{"yearnumber":2023},{"yearnumber":2024},{"yearnumber":2025},{"yearnumber":2026},{"yearnumber":2027},{"yearnumber":2028},{"yearnumber":2029},{"yearnumber":2030},{"yearnumber":2031},{"yearnumber":2032}]}

私には冗長に見えますが

于 2012-07-17T19:03:01.460 に答える
1

これ

{"success":true, "years":["yearnumber":2012,"yearnumber":2013,...]}

は有効な JSON ではありません。配列 ( []) にはキーを含めることはできず、値のみを含めることができます。(このシナリオでの)最善の解決策は、とにかくすべて同じであるため、キーをカットすることです(Esailjaの回答を参照)

別の方法は、このようなオブジェクトの配列を作成することです

{"success":true, "years":[{"yearnumber":2012},{"yearnumber":2013},...]}

PHP からそれを実現するには:

$rt = array();
$rt["success"] = true;
$rt["years"] = array();
for ($i=intval(date('Y')) ; $i < (date('Y')+21) ; $i++) {
     $rt['years'][] = array('yearnumber' => $i);
}
echo json_encode($rt);
于 2012-07-17T19:08:31.277 に答える