0

警告メッセージを処理しようとしていますが、グローバル変数/配列(最後の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 に答える