PHP警告:非法字符串偏移量&;为foreach()提供的参数无效

PHP警告:非法字符串偏移量&;为foreach()提供的参数无效,php,error-handling,warnings,Php,Error Handling,Warnings,当没有任何结果时,会出现以下两个错误: 中的非法字符串偏移量“艺术家” 为foreach()提供的参数无效 下面的代码匹配用户搜索的结果,并通过last.fm API返回信息,该代码位于不同的文件中,不会导致问题 当没有搜索结果且foreach循环试图在没有数据的情况下执行时,就会出现问题。现在需要的是某种类型的错误捕捉,而我尝试过的任何方法都不起作用 由于它是一个foreach循环,所以catch语句似乎不起作用 if(!isset($json['results']['artistmatc

当没有任何结果时,会出现以下两个错误:

  • 中的非法字符串偏移量“艺术家”
  • 为foreach()提供的参数无效
下面的代码匹配用户搜索的结果,并通过last.fm API返回信息,该代码位于不同的文件中,不会导致问题

当没有搜索结果且foreach循环试图在没有数据的情况下执行时,就会出现问题。现在需要的是某种类型的错误捕捉,而我尝试过的任何方法都不起作用

由于它是一个foreach循环,所以catch语句似乎不起作用

if(!isset($json['results']['artistmatches']['artist'][0]))
    {  
    echo '<div class="alert  alert-danger">Artists Not Found</div>';
    }
    else 
    { 
        foreach ($json['results']['artistmatches']['artist'] as $track) 
        {
            $artist = $track['name'];
            $image = $track['image'][3]['#text'];
            $url =  preg_replace("/ /s","_" , $artist); 
            if($artist&&$image)
            {
                include('./artist_short.php');      
            }
        }

    }
if(!isset($json['results']['artistmatches']['artist']]0]))
{  
回声“找不到艺术家”;
}
其他的
{ 
foreach($json['results']['artistmatches']['artist']作为$track)
{
$artist=$track['name'];
$image=$track['image'][3]['#text'];
$url=preg_replace(“//s”,“_”,“$artist”);
如果($artist&&$image)
{
包括('./artist_short.php');
}
}
}

添加检查结果是否为数组的if语句

if(is_array($json['results']['artistmatches'])) {

    foreach ($json['results']['artistmatches']['artist'] as $track) 
    {
        $artist = $track['name'];
        $image = $track['image'][3]['#text'];
        $url =  preg_replace("/ /s","_" , $artist); 

        if($artist&&$image)
        {
            include('./artist_short.php');      
        }
    }
} else {
 //handle case where the condition doesn't match.
}

不是重复,对于这个问题,我确实尝试过这种方法,但是我没有包括某些数组字段。另一个是通用的解决方案,我尝试过,但不起作用;因此,我像应该的那样使用这个网站,询问社区是否知道解决方案。正如您所看到的,使用该解决方案,我不会想到将结果和artistmatches(而不是artist)添加到is_数组语句中,因此它是不同的。当我尝试使用该解决方案但它不起作用时,我询问了为我提供解决方案的社区,假定它使用相同的is_数组函数,但这就是相似之处的结束。请不要对此感到生气,但我觉得你的目的是贬低他人,你给我的印象是,如果你可以的话,你会禁止我进入这个网站。我请求帮助,当我找不到其他可行的解决方案时,我得到了帮助。我在讨论中又发了帖子