Отчеты об ошибках неопределенного индекса в WAMP и PHP

Я использую wamp для разработки приложения php. Моя проблема в том, что каждый раз, когда я вызываю переменную, которая иногда не имеет значения, я получаю сообщение об ошибке, в котором говорится, что это неопределенный индекс. Есть ли способ изменить отчет об ошибке, чтобы не отображать эту ошибку? Я должен использовать isset, чтобы определить, установлен ли он или нет, прежде чем я выведу переменную, но я не хочу этого делать. Есть области моего приложения, которые делают этот метод неэффективным.


person ShoeLace1291    schedule 29.08.2011    source источник
comment
Вы понимаете, что каждое предупреждение, которое генерирует PHP (даже если оно не отображается), влечет за собой снижение производительности? К слову о неэффективности...   -  person Jani Hartikainen    schedule 29.08.2011


Ответы (5)


Если вы не хотите менять уровень error_reporting, вы должны проверить, существует ли переменная, прежде чем использовать ее. Вы можете использовать

 if(isset($var)) 

для этого. Вы можете добавить какую-то функцию, чтобы не писать ее постоянно. Пример:

 function getPost($name,$default=null){
     return isset($_POST[$name])?$_POST[$name]:$default;
 }

Использование:

getPost('id');
getPost('name','Not Logged In');
person RiaD    schedule 29.08.2011

Вы можете просто отключить механизм в php.ini.

Эта ветка вам поможет.

http://www.wampserver.com/phorum/read.php?2,70609,70700

Но, как правило, лучше позаботиться о неопределенных переменных, поскольку они могут избавить вас от некоторых проблем во время выполнения.

Обновлять:

В php.ini изменить

error_reporting = E_ALL в error_reporting = E_ALL & ~E_NOTICE

person swordfish    schedule 29.08.2011
comment
Я наверное плохо объяснил ситуацию. Что я хочу сделать, так это вместо неопределенной переменной, возвращающей ошибку при ее вызове, я хочу, чтобы она возвращалась как пустая строка ($ x = '') или что-то в этом роде. Не изменять стиль отчетов об ошибках. - person ShoeLace1291; 29.08.2011

Есть несколько способов обойти это:
error_reporting(0) Используйте это в начале вашего скрипта
установите display_errors = Off в php.ini
Используйте '@' перед оператором, который генерирует ошибку

Но если вы не пишете что-то тривиальное, вы абсолютно должны использовать array_key_exists или if(!empty($arrayName['key'])) для всего, что отправляет пользователь.

person Ravi    schedule 29.08.2011

Попробуй это:

если(!isset($var)) $var="";

person Tommy    schedule 31.05.2013

Файлы PHP.ini находятся в обоих:

bin\php\php5.x

а также

bin\apache\apache2.x\bin

обязательно внесите изменения в версию папки apache.


Также установка:

display_errors = Выкл.

display_startup_errors = Выкл.

error_reporting = E_ALL

log_errors = Вкл

не позволяет отображать ошибки на клиенте, но по-прежнему позволяет записывать их в журнал ошибок.

person user945389    schedule 25.07.2014