我有返回一些数据的 JSON 脚本,但有时它是空的,我的 foreach 循环在它为空时抛出一个错误这是我的代码
<?php
$planItems = getJSON('getPlanItems');
foreach ((array)$planItems->items as $item){
?>
我注意到它是因为
$planItems->项目
删除 -> 不会抛出错误,但我无法从 JSON 数据中正确读取结果。
有没有什么办法解决这一问题?
我有返回一些数据的 JSON 脚本,但有时它是空的,我的 foreach 循环在它为空时抛出一个错误这是我的代码
<?php
$planItems = getJSON('getPlanItems');
foreach ((array)$planItems->items as $item){
?>
我注意到它是因为
$planItems->项目
删除 -> 不会抛出错误,但我无法从 JSON 数据中正确读取结果。
有没有什么办法解决这一问题?
当然,当$planItems->items
未设置或不是数组时会出错。这不是很方便,但就是foreach
这样。为了防止它,您需要在循环之前检查,例如:
if (isset($planItems->items) && is_array($planItems->items)) {
foreach ($planItems->items as $item) {
// ....
}
}
你的鼻子很好,确实有问题的部分是:
$planItems->items
这只有在$planItems
是一个对象并且有items
成员时才有效。您需要先检查一下,很可能您错过了检查getJSON
错误条件的返回值。
$planItems = getJSON('getPlanItems');
if ($planItems === ???) { # do your error condition checking here
throw new UnexpectedValueException('Remove Json Request error.');
}
如果您在代码中添加适当的错误处理,问题就会消失。
您可以使用带有第二个参数 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){
?>