0

当我尝试处理 WARNING 消息时,出现全局变量/数组错误(在最后一行 print_r 上):

注意:未定义的变量:错误............

我也尝试在函数之外声明$errors但同样的问题。

谢谢

我的代码:

set_error_handler('validation_error_handler', E_WARNING);

function validation_error_handler($error_no, $error_message)
{
    global $errors;
    $errors[] = $error_message;
}

echo '<pre>'; print_r($errors); echo '</pre>';
4

2 回答 2

3

您需要先声明$errors为数组:

set_error_handler('validation_error_handler', E_WARNING);
$errors = array(); // Add this...

更新:

set_error_handler('validation_error_handler', E_WARNING);

$errors = array();

function validation_error_handler($error_no, $error_message)
{
    global $errors;
    $errors[] = $error_message;
}

echo preg_match();

echo '<pre>'; print_r($errors); echo '</pre>';

这将打印

<pre>Array
(
    [0] => preg_match() expects at least 2 parameters, 0 given
)
</pre>

确保您的错误/警告发生在您之前print_r($errors);

于 2012-07-27T14:38:50.967 回答
1

在你的函数之外声明$errors,然后通过引用将它传递给你的函数。

$errors = array();

function validation_error_handler($error_no, $error_message, &$errors)
{
    $errors[] = $error_message;
}

echo '<pre>'; print_r($errors); echo '</pre>';

避免以这种方式使用全局变量,因为如果包含在其他文件中,它们可能会导致冲突。

另外,阅读 php 中的变量范围:http: //php.net/manual/en/language.variables.scope.php

于 2012-07-27T14:49:50.960 回答