如何解决PHP 错误:尝试访问类型为 null 的值的数组偏移量
我正在从 JSON 文件中检索数据,我在其中抓取地点评论并发布这些评论。
有些地方没有任何评论,所以当我尝试抓取它们时,我收到的是 null。
我试图用 if 语句解决这个问题:
if ($reviewNum = count($json_reviews['result']['reviews']) == null)
这是完整的代码:
if ($reviewNum = count($json_reviews['result']['reviews']) == null){
echo 'No Reviews!';
}
else{
for ($i = 0; $i < count($json_reviews['result']['reviews']); $i++){
echo '<b>' . $json_reviews['result']['reviews'][$i]['author_name'] . '</b><br>';
echo '"' . $json_reviews['result']['reviews'][$i]['text'] . '"' . '<br>';
}
}
我也尝试了一个 try catch :
try{
for ($i = 0; $i < count($json_reviews['result']['reviews']); $i++){
echo '<b>' . $json_reviews['result']['reviews'][$i]['author_name'] . '</b><br>';
echo '"' . $json_reviews['result']['reviews'][$i]['text'] . '"' . '<br>';
}
}
catch(Exception $e){
echo 'No reviews!';
}
这是我的错误信息:
Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array,null given
解决方法
您应该检查它们是否存在,然后即使它们为空也可以迭代它们:
for ($i = 0; isset($json_reviews['result']['reviews']) && $i < count($json_reviews['result']['reviews']); $i++) {
}
如果您想在没有可用评论的情况下输出错误:
if (!isset($json_reviews['result']['reviews']) || count($json_reviews['result']['reviews']) === 0){
echo 'No Reviews!';
}
else{
for ($i = 0; $i < count($json_reviews['result']['reviews']); $i++){
echo '<b>' . $json_reviews['result']['reviews'][$i]['author_name'] . '</b><br>';
echo '"' . $json_reviews['result']['reviews'][$i]['text'] . '"' . '<br>';
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。