Php 如果发生多个错误,如何仅显示一个错误?

Php 如果发生多个错误,如何仅显示一个错误?,php,error-handling,Php,Error Handling,因此,我在我的网站上有一个api,它有时会因为我在网站上获取数据而导致HTTP错误。我想知道,如果使用自定义错误处理程序出现多个错误,我如何只能显示一个错误 以下是我当前的代码: function Error($errno, $errstr, $errfile, $errline) { echo "ERROR"; error_log($errstr . " - on line " . $errline); } set_error_handler("Error"); 您可以将所有错误存储

因此,我在我的网站上有一个api,它有时会因为我在网站上获取数据而导致HTTP错误。我想知道,如果使用自定义错误处理程序出现多个错误,我如何只能显示一个错误

以下是我当前的代码:

function Error($errno, $errstr, $errfile, $errline) {
  echo "ERROR";
  error_log($errstr . " - on line " . $errline);
}
set_error_handler("Error");

您可以将所有错误存储在一个数组中,然后只显示数组中的第一个错误。

如果您无法控制它,那么最好的方法并不是真正的干净-也就是说,可能有更好的方法可以使用更干净的代码

我对代码的其余部分不太了解,但您需要将整个代码包装在一个检查中,以查看是否存在错误。我不知道vars等是从哪里来的,但假设PHP是标准的,例如

if (!empty($errno)) {
    function Error($errno, $errstr, $errfile, $errline) {
        error_log($errstr . " - on line " . $errline);
    }
    set_error_handler("Error");

    if (empty($errorWasDisplayed)) {
        $errorWasDisplayed = true;
        echo "whatever your error message is";
    }
}
它总是第一个错误,但是如果您需要一个特定的错误,那么您只需要调整条件以将其考虑在内


如果需要在错误消息中显示,可以从函数返回值

我找到了解决办法
die()
防止再次调用该函数。但这也意味着,如果出现另一个错误,则不会记录该错误,因为该函数只会被调用一次

function Error($errno, $errstr, $errfile, $errline) {
    echo "ERROR";
    error_log($errstr . " - on line " . $errline);
    die();
}
set_error_handler("Error");

那个代码是在循环中调用的吗?如果是,则设置或返回一个变量,并仅在未设置该变量或任何内容时调用该函数。如果不知道功能如何,很难给出建议implemented@James是的,它是在循环中调用的。谢谢我没有想到这点。@James我试过了,但出于某种原因,它似乎无法获取变量&显示了以下错误:
注意:未定义的变量:isError
编辑您的问题以显示循环代码,还有您的新东西。一定很简单:)@James我的代码中没有循环的地方。。。每次出现错误时,php都会调用我的错误函数,我无法控制它。不过,这有点低效。当您只需要1个值时,为什么要使用数组(多个值)?等等,在循环中调用error函数。。。因此,它将显示数组中的第一个错误times@Fallen因此,在显示错误后退出循环。我无法控制调用错误函数的次数,每次出现错误时,php都会调用它。@请查看James answer。代码的问题是,即使没有错误发生,它也会回显,老实说,我的工作有点盲目,因为我看到的只是一个函数和一条错误消息。您不能向我显示循环或其他代码。一秒钟…实际上,它不也总是调用函数并尝试记录事情吗?如果没有,那么我添加的代码就可以了,正如您在另一条注释“每次出现错误时php都会调用它”中所述。如果在其他地方确定是否存在错误,那么上面的代码就可以了,否则可能函数和我的代码需要进行健全性检查?是的&出于某种原因,它无法获取函数外部的变量,我不知道为什么等待,不,它不会总是调用函数。php仅在出现错误时调用该函数(抱歉,我错过了阅读)