Как isset не выдает ошибку при оценке свойств массива?

Всякий раз, когда я пытаюсь получить доступ к свойству несуществующего массива, php выдает сообщение ERROR_NOTICE, которое выглядит следующим образом:

Notice: Undefined offset: BLANK in BLANK on line BLANK

$a = array("a","b","c");

$a[4]; //throws an error

Вместо этого, если я использую isset для проверки существования этого свойства, эта ошибка не возникает.

$a = array("a","b","c");

isset($a[4]); //does not throw an error

Поскольку php оценивает аргументы перед их передачей в функцию, как isset не выдает ошибку?


person Nicola Pedretti    schedule 28.11.2017    source источник
comment
isset не является функцией, даже если выглядит так.   -  person tkausl    schedule 28.11.2017
comment
Ха! это было легко, я, должно быть, пропустил это в документации!   -  person Nicola Pedretti    schedule 28.11.2017
comment
можете ли вы добавить реальный пример кода, чтобы сделать его более полезным для будущих читателей   -  person    schedule 28.11.2017
comment
да, позвольте мне обновить вопрос   -  person Nicola Pedretti    schedule 28.11.2017


Ответы (1)


isset — это не функция, а языковая конструкция :

Примечание. Поскольку это языковая конструкция, а не функция, ее нельзя вызывать с помощью переменных функций.

Он не вызывается так, как вызываются функции, а обрабатывается языком специально. То же самое касается empty.

person tkausl    schedule 28.11.2017