#php
Проверяю в коде php, задан ли $_POST через isset($_POST) Заметил, что выражение всегда возвращает true, даже когда никаких данных не передовали, при этом $_POST является пустым массивом. Почему так происходит и зачем так сделано? Или это только при определенных условиях? Вопрос чисто теоретический, проблемы тут никакой нет.
Ответы
Ответ 1
$_POST, как и другие суперглобальные переменные (встроенные переменные всегда доступные во всех областях видимости) PHP ($GLOBALS, $_SERVER, $_GET, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV), изначально инициализируется пустым массивом, а потом заполняется соответствующими значениями. За исключением $_SESSION, которую нужно явно инициализировать вызовом session_start(). Сделано так, скорее всего, по каким-то внутренним соображениям для удобства. Так же, так как в большинстве случаев в получении всего содержимого суперглобальной переменной нет необходимости, а нужно лишь получить значение или проверить наличие определенного ключа, и зная что переменная всегда массив, удобно использовать конструкцию isset($_VAR[$key]); без дополнительных проверок самой переменной.
Комментариев нет:
Отправить комментарий