Foreach循环随机抛出“提供的参数无效”


Foreach loop randomly throwing “invalid argument supplied”

我试图让这个函数工作,但由于某种原因,它在前一行出错,说有一个无效的参数。

$scores= TESTAPI::GUL($user->ID);
if (empty($scores)) {
    echo "<p>No Scores</p>";
} else {
    foreach ($scores as $score) {
        echo "<p>".$score."</p>";
    }
}
我得到的错误是:PHP Warning: Invalid argument supplied for foreach()

注意:我需要保持if... else...在当前的顺序

if语句的一些变体,在for

之前
if(!is_array($scores) && !count($scores) || empty($scores)){
if(!is_array($scores) && !count($scores)){

我不能使用使用var_dump($scores);,因为错误是在我运行的私人网站上的一个页面上(无法提供链接),我无法找到一种方法来重新创建错误。也许有人知道我可以捕获导致foreach出错的数据并将其保存到日志文件的方法?

如果不是数组,可以使用error_log:

$scores= TESTAPI::GUL($user->ID);
if (empty($scores)) {
    echo "<p>No Scores</p>";
} else {
    if(!is_array($scores)) {
        $scores_info = print_r($scores, true);
        error_log('$scores is no array but: ' . $scores_info);
        echo "<p>No Scores</p>";
    } else {
        foreach ($scores as $score) {
            echo "<p>".$score."</p>";
        }
    }
}

它将写入错误日志。您可以在error_log文档中了解如何配置它。当您知道错误是什么时,您应该清楚地将其删除,但是对于临时捕获它,这是有效的…