将参数传递给set_error_处理程序PHP中调用的函数 函数errHandle($errNo、$errStr、$errFile、$errLine、$xmlArray){ $msg=“$errStr在$errLine行的$errFile中”; 如果($errNo==E|u通知|$errNo==E|u警告){ 抛出新的ErrorException($msg,$errNo); }否则{ echo$msg; 回声'; function errHandle($errNo, $errStr, $errFile, $errLine, $xmlArray) { $msg = "$errStr in $errFile on line $errLine"; if ($errNo == E_NOTICE || $errNo == E_WARNING) { throw new ErrorException($msg, $errNo); } else { echo $msg; echo '<pre>'; print_r($xmlArray); } } foreach($returnValues as $xmlArray){ .... .... set_error_handler(array($xmlArray, 'errHandle')); } 打印(xmlArray); } } foreach($returnValues作为$xmlArray){ .... .... set_error_handler(数组($xmlArray,'errHandle')); }

将参数传递给set_error_处理程序PHP中调用的函数 函数errHandle($errNo、$errStr、$errFile、$errLine、$xmlArray){ $msg=“$errStr在$errLine行的$errFile中”; 如果($errNo==E|u通知|$errNo==E|u警告){ 抛出新的ErrorException($msg,$errNo); }否则{ echo$msg; 回声'; function errHandle($errNo, $errStr, $errFile, $errLine, $xmlArray) { $msg = "$errStr in $errFile on line $errLine"; if ($errNo == E_NOTICE || $errNo == E_WARNING) { throw new ErrorException($msg, $errNo); } else { echo $msg; echo '<pre>'; print_r($xmlArray); } } foreach($returnValues as $xmlArray){ .... .... set_error_handler(array($xmlArray, 'errHandle')); } 打印(xmlArray); } } foreach($returnValues作为$xmlArray){ .... .... set_error_handler(数组($xmlArray,'errHandle')); },php,business-logic,Php,Business Logic,我可以将数组作为参数传递给errHandle函数吗 它显示了错误: set_error_handler()要求参数(SimpleXMLElement::errHandle)是 整个目的是检查迭代中是否有错误,然后显示该数组以查看函数errHandle中的数组内容 set_error_handler(array($this, 'customErrorHandler')); 您不能直接这样做,因为用户定义的错误处理程序有严格的规则。 如果您正在定义错误处理程序,您可以依赖它的上下文-该上下文将作为

我可以将数组作为参数传递给errHandle函数吗

它显示了错误: set_error_handler()要求参数(SimpleXMLElement::errHandle)是

整个目的是检查迭代中是否有错误,然后显示该数组以查看函数errHandle中的数组内容

set_error_handler(array($this, 'customErrorHandler'));

您不能直接这样做,因为用户定义的错误处理程序有严格的规则。 如果您正在定义错误处理程序,您可以依赖它的上下文-该上下文将作为最后一个参数传递,并将包含当前范围(即触发错误的范围)。下面是一个例子:

function errHandle($errNo, $errStr, $errFile, $errLine, $errContext) {
    $msg = "$errStr in $errFile on line $errLine";

    if ($errNo == E_NOTICE || $errNo == E_WARNING) {
        throw new ErrorException($msg, $errNo);
    } else {
        echo $msg;
        echo '<pre>';
    print_r($errContext);
    }
}

$xmlArray=['foo'=>'bar'];
set_error_handler('errHandle');

trigger_error('test', E_USER_WARNING);
函数errHandle($errNo,$errStr,$errFile,$errLine,$errContext){
$msg=“$errStr在$errLine行的$errFile中”;
如果($errNo==E|u通知|$errNo==E|u警告){
抛出新的ErrorException($msg,$errNo);
}否则{
echo$msg;
回声';
function errHandle($errNo, $errStr, $errFile, $errLine, $xmlArray) {
    $msg = "$errStr in $errFile on line $errLine";

    if ($errNo == E_NOTICE || $errNo == E_WARNING) {
        throw new ErrorException($msg, $errNo);
    } else {
        echo $msg;
        echo '<pre>';
    print_r($xmlArray);
    }
}

foreach($returnValues as $xmlArray){

....
....
set_error_handler(array($xmlArray, 'errHandle'));

}
打印($errContext); } } $xmlArray=['foo'=>bar']; 设置错误处理程序('errHandle'); 触发错误(“测试”,用户警告);

您将能够通过相应的键(即
'xmlArray'
)从参数
$errContext
访问
$xmlArray
)。有关更多信息,请参见。

您的意图是明确的,但是请参见
设置错误处理程序的作用:-您首先注册错误处理函数,然后执行您认为有错误的代码。