全局变量处理
问题描述:
虽然我试图以处理警告消息,我得到错误全局变量/数组(去年的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>';
答
您需要声明$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);
答
声明你的函数$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
我做过。数组中应该存储2个警告错误。故意靠自己完成,但没有任何回应。数组看起来空了。 – BentCoder 2012-07-27 14:47:38
已更新的答案。听起来像你可能会试图print_r错误发生之前..上面的例子工程。我打电话preg_match没有任何attribs。 – 2012-07-27 14:50:36
完美。谢谢。 – BentCoder 2012-07-27 15:00:29