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

时间:2015-05-16 15:35:27

标签: php if-statement foreach

我试图让这个功能起作用,但由于某种原因,它在foreach行上出错,说有一个无效的参数。

$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...

for语句的一些变体,在for

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

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

1 个答案:

答案 0 :(得分:1)

如果它不是数组,您可以使用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>";
        }
    }
}

它将写入错误日志。您可以在the error_log doc处了解详情,了解如何配置它。当你知道错误是什么时,你应该清楚地干掉它,但是为了临时捕获它,这有用......