2012-07-27 2 views
0

Пока я пытаюсь справиться ПРЕДУПРЕЖДАЮЩИЕ сообщения, я получаю сообщение об ошибке для глобальной переменной/массива (на последней print_r линии):Глобальная переменная обработка

Примечание: Undefined переменной: ошибки в .... ....

Я попытался объявить $ ошибок за пределами функции, а также, но та же проблема.

Благодаря

Мой код:

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>'; 

ответ

3

Вы должны объявить $errors как массив первого:

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

Update:

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);

+0

я сделал. В массиве должно быть записано 2 предупреждения. Умышленно сделанный мной, но ничего не отгоняй. Массив выглядит пустым. – BentCoder

+1

обновленный ответ. Похоже, что вы можете пытаться печатать_r ошибки до того, как они произойдут. Пример выше работает. Я вызвал preg_match без каких-либо атрибутов. –

+0

Просто отлично. Спасибо. – BentCoder

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

Смежные вопросы