我需要使用类似于以下内容的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编程很新,可以在这里使用一点点。感谢。
答案 0 :(得分: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}]}
虽然对我来说似乎是多余的
答案 1 :(得分:1)
此
{"success":true, "years":["yearnumber":2012,"yearnumber":2013,...]}
是无效的JSON。数组([]
)不能包含键,只能包含值。最好的解决方案(在这种情况下)只是削减他们的密钥,因为他们无论如何都是一样的(参见Esailija的回答)
另一种方法是创建像这样的对象数组
{"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);