2010-02-27 5 views
1

При попытке получить доступ к информации, которая не представлена ​​в XML, как так: $someInfo = $element->blabla->cats[0]->src;
PHP показывает уведомление, как это: Notice: Trying to get property of non-object
Как бы урегулировать этот вопрос?PHP: Обратите внимание, когда error_reporting (E_ALL)

+0

Duplicate: http://stackoverflow.com/questions/2345819/php-notice-when-error-reportinge-all – Franz

ответ

2

Либо $element, blabla, либо cats[0] не является объектом и, следовательно, не может содержать никаких элементов.

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

if (isset($element->blabla->cats[0]->src)) 
echo $element->blabla->cats[0]->src; 

один isset() не должен делать, нет необходимости проверять каждую часть последовательно.

Это должно выполняться, даже если cats существует, но не является массивом.

0

вы можете использовать IsSet, чтобы проверить, если объект недвижимости существует, например:

if (isset ($element->blabla) && isset ($element->blabla->cats) && etc..)

, если вы просто не хотите видеть уведомление, используйте error_reporting(E_ALL & ~E_NOTICE)

0

Или альтернатива (но неправильно путь) вы можете подавить журнал в вашем PHP скрипта:

error_reporting(E_ERROR); 

Что заставит PHP сообщать только фатальные ошибки.

В любом случае, используйте решение Pekka.

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