-1

我有返回一些数据的 JSON 脚本,但有时它是空的,我的 foreach 循环在它为空时抛出一个错误这是我的代码

<?php
$planItems = getJSON('getPlanItems');
foreach ((array)$planItems->items as $item){
?>

我注意到它是因为

$planItems->项目

删除 -> 不会抛出错误,但我无法从 JSON 数据中正确读取结果。

有没有什么办法解决这一问题?

4

3 回答 3

2

当然,当$planItems->items未设置或不是数组时会出错。这不是很方便,但就是foreach这样。为了防止它,您需要在循环之前检查,例如:

if (isset($planItems->items) && is_array($planItems->items)) {
    foreach ($planItems->items as $item) {
        // ....
    }
}
于 2012-10-06T18:06:31.630 回答
1

你的鼻子很好,确实有问题的部分是:

$planItems->items

这只有在$planItems是一个对象并且有items成员时才有效。您需要先检查一下,很可能您错过了检查getJSON错误条件的返回值。

$planItems = getJSON('getPlanItems');

if ($planItems === ???) { # do your error condition checking here
    throw new UnexpectedValueException('Remove Json Request error.');
}

如果您在代码中添加适当的错误处理,问题就会消失。

于 2012-10-06T18:10:13.403 回答
0

您可以使用带有第二个参数 true 的json_decode PHP 函数将 JSON 转换为数组。然后在 foreach 写入条件之前if (!empty($planItems ))

这将是

<?php
$planItems = json_decode(getJSON('getPlanItems'),true);
if (!empty($planItems['items'] ))
foreach ($planItems['items'] as $item){
?>
于 2012-10-06T18:06:21.463 回答