пусто и ноль в виде строки

#php

#php

Вопрос:

Как мне написать условие if, которое будет оценивать ноль как не пустой? Я пишу сценарий проверки, и если поле пустое, я выдаю ошибку. В случае выбора с числовыми значениями, начинающимися с 0 (нуля), это не должно считаться пустым. В руководстве указано, что строка 0 считается пустой и возвращает false . Если я изменю empty на !isset , ноль будет работать, но другие текстовые поля, которые действительно пусты, пройдут проверку. Как мне написать это, чтобы обработать мой случай?

Комментарии:

1. Почему бы сначала не выполнить сравнение строк? $test == "0" ?

2. if($value !== 0 ) , потому что (false == 0) это true. но false === 0 это неверно

3. Длина строки «0» равна… (то есть задайте PHP другой вопрос)

Ответ №1:

 if (strlen($x)) {
  // win o/ (not empty)
}
  

Удачного кодирования.

(Все содержимое текстового поля / формы ввода по сути является просто текстом. Любое значение в виде числового значения приходит позже, и каждое представление может быть проверено. 0 принудительно возвращается к «0» в strlen .)

Комментарии:

1. @pst.. Я только что попробовал strlen, но ноль сообщается как длина «0». Этого не должно быть, хотя верно?

2. @jim See codepad.viper-7.com/6hVirM — «работает здесь». Возможно, действительно нет 0?

3. Хорошо, спасибо за это, мой друг.. У меня должна быть проблема где-то в другом месте. Спасибо за помощь и подсказку задать другой вопрос. 🙂

Ответ №2:

Рассматривали ли вы возможность использования is_null()?

 if (is_null($value) || $value === "") {}

if (empty($value) amp;amp; $value !== 0)
  

Комментарии:

1. Чарльз.. То, что я получаю с помощью is_null, — это точно такое же поведение, которое дает мне !isset. Пустые входные данные теперь проходят проверку, когда они не должны

2. Чарльз, вот что я получаю с помощью is_null: string(5) "aaaaa" string(0) "" string(0) "" string(0) "" string(0) "" string(4) "2222" string(5) "test1" string(0) "" string(1) "2"

Ответ №3:

 if(!is_numeric($var) amp;amp; empty($var))
{
    // empty
}
else
{
    // not empty
}