Я немного смущен тем, что использовал filter_has_var($_POST['id'])
через isset($_POST['id'])
.
Может кто-нибудь, пожалуйста, скажите мне, является ли это просто функцией псевдонима?
Не так много;) Согласно странице руководства для filter_has_var один пользователь находит filter_has_var
немного быстрее. Также стоит отметить … filter_has_var
не работает над живым массивом ( $_POST
), а на фактическом предоставленном входе … если вы когда-либо добавляете / удаляете / обновляете то, что в этом массиве, вы не увидите эти изменения с помощью filter_has_var
вызов (в то время как isset
будет отображать текущее состояние)
Кстати, использование filter_has_var(INPUT_POST,"id");
Обновление: возможно, стоит упомянуть, filter_has_var
был представлен в PHP 5.2.0 (несколько новый), в то время как isset
был вокруг для всего PHP4 + 5. Большинство серверов постоянно обновляется, но isset
всегда будет работать (никто до сих пор не запускает PHP3?)
Прежде всего, это не
filter_has_var($_POST['id'])
Это
filter_has_var(INPUT_POST, 'id')
Во-вторых, он фактически не запрашивает $_POST
. Он анализирует параметр запроса, который пришел с запросом, поэтому это лучший метод для использования в случае, если $_POST
каким-то образом загрязнен скриптом PHP.
Я думаю, вы имеете в виду filter_has_var(INPUT_POST, 'id')
над isset($_POST['id'])
.
Существует небольшая разница в том, что isset
возвращает false, если $_POST['id']
равно NULL
; вам придется использовать key_exists('id', $_POST)
чтобы иметь подобное поведение в этом отношении.
Кроме того, единственное различие заключается в том, что filter_has_var
не рассматривает модификации массива $_POST
(см. Этот комментарий ).
Функция не проверяет живые массивы
<?php $_GET['a'] = 1; echo filter_has_var(INPUT_GET, 'a') ? 'Exist' : 'Not exist';
будет печать Не существует