问题描述
我正在从 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>';
}
}