不确定我在这里做错了什么,但我有我的Json字符串,我试图在IF语句中打印出值
即:
63,52,55
这是我的代码:
$jayjay = '{"items":{"cID":"63","qty":"2"},"items":{"cID":"52","qty":"1"},"items":{"cID":"55","qty":"1"}}';
echo $jayjay;
$obj = json_decode($jayjay, TRUE);
for($i=0; $i<=count($obj['items']); $i++) {
echo $obj['items'][$i]['cID'];
echo ",";
}
但输出只是空白而我无法弄清楚为什么
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:2)
问题是你有钥匙&#34;物品&#34;多次在你的JSON中出错了。请注意,对于结构良好的JSON,JSON密钥必须是唯一的。
如果您使用多个具有相同名称的键,基本上没有错误,但在JSON中,具有相同名称的最后一个键是将要使用的键。在您的情况下,关键&#34;项目&#34;最好包含一个对象数组,因为它的值:
{'items' : [{"cID":"63","qty":"2"}, {"cID":"52","qty":"1"}, {"..." : "..."}]}
答案 1 :(得分:2)
正如哈米什在他的comment
中所说,你不能拥有你提供的json。密钥(在这种情况下为items
)将相互覆盖,直到最后一个密钥。
我建议如果您创建这样的数组:
{"items":[{"cID":"63","qty":"2"}, {"cID":"52","qty":"1"},.....]}
允许您根据需要进行修改。 意思是你可以根据需要简单地循环:
$items = json_decode($json, true);
foreach($items as $thing){
echo $thing['cID'];
echo ",";
}
答案 2 :(得分:0)
正如已经指出的那样,您的JSON数据格式不正确。
但是由于Stack Overflow是一种相当低效的语法检查数据的方法,我建议将来在静态JSON数据上使用JSON linter(例如this one)。或者至少,在解析之后检查json_last_error
的返回值,以便至少在测试或调试时查找潜在的问题。