sabramovskikh
@sabramovskikh

Какой метод лучше использовать для определения пустой и инициализированной переменной?

Какой метод лучше и почему?
if ( !empty($arResult) && !isset($arResult) )
if ( $arResult != "" )
  • Вопрос задан
  • 2823 просмотра
Пригласить эксперта
Ответы на вопрос 4
FanatPHP
@FanatPHP
Чебуратор тега РНР
Если выбирать из этих двух
То второй метод лучше. Он хотя бы иногда будет работать.
В отличие от первого,
Который просто безумный треш.

А вот почему - ты сам должен ответить. Прочитав документацию по использованным тобой функциям.
Там же - сюрприз! - ты найдешь и ответ на свой вопрос. Настоящий ответ, а не то жалкое блеянье, которое тебе напишет здесь очередной мимо проходивший школьник.
Ответ написан
TekVanDo
@TekVanDo
Javascript Developer
все зависит от того что вы хотите проверить.
empty - делает приведение типов, т.е. если внутри arResult - пустой массив или например 0, то !empty($arResult) == false
$arResult != "" работает только для строк.
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Когда надо проверить, что переменная инициализирована и отлична от null - isset.
Когда надо проверить, что переменная не пустая - empty.
empty принимает только один аргумент, в отличии от isset.
<?php
if (isset($a)) {
    /* code */ 
}
if (isset($a, $b)) {
    /* code */
}
if (isset($a['a']['b'], $b, $c[0][1])) {
    /* code */
}
Ответ написан
Комментировать
mr_T
@mr_T
Web-разработчик
Судя по $arResult ты имеешь дело с битриксом. Если это так, то $arResult за тебя уже инициализирован. В любом случае, проверку в пыхе стоит делать более осмысленно, а именно исходить из того, какой тип значения ты хочешь получить. Если у тебя, скажем, строка, то можно обойтись простейшим методом, которым я чаще всего пользуюсь сам:
if (isset($arResult['somevar']) && $arResult['somevar']) { ... }

Здесь ты для начала проверяешь, есть ли вообще такая переменная (или ключ в массиве), а потом смотришь, приводится ли она к false (а, как известно, пустая строка приводится, но, например, 0 тоже приводится, что нужно понимать). Потом уже в коде ты скорее всего где-то неявно приведешь переменную к строке, то есть, например, число 100500 будет приведено к строке '100500'.
Для более строгой проверки можно использовать функции, подобные is_int, is_array и т.д., а так же instanceof. Еще, если не знаешь, то почитай про операторы == и === (!=, !==) - тоже по этой теме.
Вообще, сравнение значений в условиях нестрогой типизации - достаточно обширная тема.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы