Стоит ли использовать isset

302
12 сентября 2017, 09:55

Мои настройки php и настройки php на хостинге не ругаются если использовать записьif ($_POST['specialist_id']) {...}.

Хорошему программисту на php лучше использовать if (isset($_POST['specialist_id'])) {...}или не возбраняется писать просто if ($_POST['specialist_id']) {...}?

Answer 1

Рекомендую всегда использовать isset() в данном контексте.

Answer 2

isset проверяет на существование переменную или элемент массива. А сам if проверяет уже значение. Это совершенно разные конструкции. Рекомендуеться проверять и на наличие переменной и само значение.

Answer 3
+-------------------+-------------+-------------------+
|$var               | isset($var) | if($var)          |
+-------------------+-------------+-------------------+
|не задана          | false       | false + E_NOTICE  |
+-------------------+-------------+-------------------+
|приводится к false | true        | false             |
|[],"",false,0,"0"  |             |                   |
+-------------------+-------------+-------------------+
|приводится к true  | true        | true              |
+-------------------+-------------+-------------------+
Answer 4

Для полного эквивалента вашего условия нужно проверять не только что переменная задана, но и что значение у нее есть:

if (!empty($_POST['specialist_id'])) {
    // эквивалент isset($_POST['specialist_id']) && $_POST['specialist_id']
}

Другим вариантом может быть отключить ругань в вашем варианте:

if (@$_POST['specialist_id'])) {
}

Впрочем на последний многие будут смотреть с опаской и подозрением.

Answer 5

Если в $_POST не будет ['key'], то есть $_POST['key'] не будет установлен, будет выведен NOTICE, а если сделать isset($_POST['key']) то даже, если этот ключ не будет определен, NOTICE не будет.
В отличии от empty конструкция isset поддерживает оператор and so on, по этому мы можем использовать такой синтаксис: isset($_POST['key'], $_POST['key2']), чего нельзя делать с empty.

Проверку на то, что переменная или ключ массива существует, нужно делать только в том случае, если вы не уверены, что этой переменной или ключа массива может не быть.
Это относится к тем областям. где переменная или ключ массима создается динамически или может быть удален в ходе.

READ ALSO
Opencart,редкая ошибка

Opencart,редкая ошибка

Добрый день,после установки модуля popup корзины на опенкарт возникла ошибка,то есть при загрузке страницы модулей выдает текст:"Страница,...

273
не могу получить данные из xml , php

не могу получить данные из xml , php

У меня есть такой файл из 1C, но не могу получить данные из xml:

260
Нужна помощь с функциями gets_s () и scanf_s ()

Нужна помощь с функциями gets_s () и scanf_s ()

При использовании функции gets_s () с какими разделителями может происходить считывание информации с консоли? Какой тип данных возвращает функция...

362
Как вывести ровную таблицу в консоли с++?

Как вывести ровную таблицу в консоли с++?

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

551