我有JSON脚本返回一些数据,但有时它是空的,我的foreach循环抛出错误,当它在这里为空时是我的代码
<?php
$planItems = getJSON('getPlanItems');
foreach ((array)$planItems->items as $item){
?>
我注意到它是因为
$ planItems-&GT;项
删除 - &gt;并没有抛出错误,但后来我无法从JSON数据中正确读取结果。
有没有解决这个问题?
答案 0 :(得分:2)
当然,$planItems->items
未设置或不是数组时出错。这不是很方便,但这就是foreach
的作用。为防止这种情况,您需要在循环之前进行检查,例如:
if (isset($planItems->items) && is_array($planItems->items)) {
foreach ($planItems->items as $item) {
// ....
}
}
答案 1 :(得分:1)
你有一个好鼻子,确实有问题的部分是:
$planItems->items
仅当$planItems
是一个对象且拥有items
成员时才会有效。你需要首先检查一下,很可能是你错过了检查getJSON
的错误条件的返回值。
$planItems = getJSON('getPlanItems');
if ($planItems === ???) { # do your error condition checking here
throw new UnexpectedValueException('Remove Json Request error.');
}
如果您为代码添加了正确的错误处理,问题就会消失。
答案 2 :(得分:0)
您可以使用json_decode PHP函数将JSON转换为数组,第二个参数为true。然后在foreach写条件if (!empty($planItems ))
这将是
<?php
$planItems = json_decode(getJSON('getPlanItems'),true);
if (!empty($planItems['items'] ))
foreach ($planItems['items'] as $item){
?>