Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для Майкл Скоуфилд
11 / 10 / 3
Регистрация: 25.09.2015
Сообщений: 238

Оператор сравнения

05.09.2018, 13:40. Показов 605. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Необходим оператор сравнения который будет сравнивать переменную с пустотой.
То есть условие вывода текста если переменная не задана. Подскажите пожалуйста как это реализовать?

Есть вот такой код

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
print <<<HTMLBLOCK
        <form method="post" action="$_SERVER[PHP_SELF]">
            <input type="text" name="zip">
            <button type="submit">send</button>
        </form>
HTMLBLOCK;
 
    if (strlen(trim($_POST['zip'])) !=5 )
        print "Please enter your zipcode";
    else
        print "Your zipcode is " . $zip = $_POST['zip'];
 
 
?>

В данный момент форма выводится в любом случае.
Я хочу сделать что бы она выводилась только в случае, если переменная $zip не задана.

Должно быть что-то такого плана


PHP
1
if ($_POST['zip']) = пустота (не задана) )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.09.2018, 13:40
Ответы с готовыми решениями:

Оператор сравнения
Здравствуйте. Интересует как сделать что бы первый if отрабатывал только если обе переменные пустые &lt;?php if (empty($_POST and...

Оператор сравнения
Возник вот такой вопрос, может кто знает в чем причина, почему выполняется такое условие? $a = '0'; $b = '000000000000000000'; ...

Оператор сравнения
добрый вечер, попался в руки учебник пхп4, начал изучать и на 4 уроке застрял на упражнении 2 упр 2. Присвойте значения двум...

9
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
05.09.2018, 14:14
empty(), !isset()
1
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
05.09.2018, 14:17
Переменная не задана, и пустая переменная немного разные вещи.

В данном случае думаю лучше всего подойдет: empty($_POST['zip'])

Что-то похожее:
1) is_null($_POST['zip'])
2) $_POST['zip'] === null
3) !array_key_exists('zip', $_POST)
4) $_POST['zip'] === ''
1
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
05.09.2018, 14:25
Обычно делают наоборот: если "переменная" задана, выполняют обработку ее значения, иначе выводят страницу с формой.

Вывод в ответ на POST-запрос не делают, а делают перенаправление. При это, если нужно что-то передать для вывода после перенаправления, можно использовать адрес, указываемый при перенаправлении.
1
 Аватар для Майкл Скоуфилд
11 / 10 / 3
Регистрация: 25.09.2015
Сообщений: 238
05.09.2018, 21:10  [ТС]
Благодарю всем за ответы.
Посмотрю, может поменяю не много логику но чисто из интересу хочу сделать так как задумал.
Только начал учить пыху, для практики моно покрутить код с разных сторон =)

Ещё раз всем спасибо.

Добавлено через 6 часов 21 минуту
Подскажите, пожалуйста, в чём проблема.
если убрать html блок после оператора if то всё отрабатывает.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if (empty($_POST['zip']))
        print <<<HTMLBLOCK
            <form method="post" action="$_SERVER[PHP_SELF]">
                <input type="text" name="zip">
                <button type="submit">send</button>
            </form>
HTMLBLOCK;
 
    if (strlen(trim($_POST['zip'])) !=5 )
        print <<<HTMLBLOCK
            <form method="post" action="$_SERVER[PHP_SELF]">
                <input type="text" name="zip">
                <button type="submit">send</button>
            </form>
HTMLBLOCK;
        print "Please enter your zipcode";
    else
        print "Your zipcode is " . $zip = $_POST['zip'];
?>
Добавлено через 15 минут
Ошибка в строке 18, хотя IDE указывает на 17-ю, на print "Please enter your zipcode".
Вопрос как вывести форму и текст под ней, если переменная задана но не верно я то решил, там всё просто.
Но хочу понять почему не работает данная конструкция, понять саму суть ошибки, что бы подобного не допускать в будущем.
0
 Аватар для wmysterio
295 / 244 / 128
Регистрация: 24.12.2014
Сообщений: 708
05.09.2018, 21:19
Цитата Сообщение от Майкл Скоуфилд Посмотреть сообщение
почему не работает данная конструкция
скобки { и } забыли добавить после условия на 10-й строке, у Вас же там 2 подряд "print" идёт.
PHP
1
2
3
4
5
6
7
8
9
10
    if (strlen(trim($_POST['zip'])) !=5 ) {
        print <<<HTMLBLOCK
            <form method="post" action="$_SERVER[PHP_SELF]">
                <input type="text" name="zip">
                <button type="submit">send</button>
            </form>
HTMLBLOCK;
        print "Please enter your zipcode";
    } else
        print "Your zipcode is " . $zip = $_POST['zip'];
0
1030 / 682 / 297
Регистрация: 04.04.2013
Сообщений: 2,751
05.09.2018, 21:23
Майкл Скоуфилд, Если не использовать фигурные скобки у блока if, то интерпритатор считает ровно одно выражение (одну строку) после него
PHP
1
if (empty($_POST['zip']))
Расставьте правильно фигурные скобки и проверьте код еще раз.

Добавлено через 1 минуту
Если вы только начинаете вникать в php, советую всегда пользоваться скобками.
0
 Аватар для Майкл Скоуфилд
11 / 10 / 3
Регистрация: 25.09.2015
Сообщений: 238
05.09.2018, 21:33  [ТС]
Сделал вот так, просто добавил скобки.
В книге ещё не дошёл до структуры с несколькими операторами, сам залез наперёд =)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if (empty($_POST['zip']))
        print <<<HTMLBLOCK
            <form method="post" action="$_SERVER[PHP_SELF]">
                <input type="text" name="zip">
                <button type="submit">send</button>
            </form>
HTMLBLOCK;
 
    elseif (strlen(trim($_POST['zip'])) !=5 ) {
        print <<<HTMLBLOCK
            <form method="post" action="$_SERVER[PHP_SELF]">
                <input type="text" name="zip">
                <button type="submit">send</button>
            </form>
HTMLBLOCK;
        print "Please enter your zipcode";
    } else
        print "Your zipcode is " . $zip = $_POST['zip'];
?>
Код отработал как задумывалось.
Ещё вопрос. Вы говорили о двух print. Это не есть нормально? Ну с точки зрения эстетики и культуры написания кода.
Просто там не задумывалось ещё какое-то условия, а просто выводиться htmlblock и другой строкой сообщение.

Добавлено через 7 минут
Так же код отрабатывает при таком расположение фигурных скобок.
Какой вариант будет более корректным?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if (empty($_POST['zip'])) {
    print <<<HTMLBLOCK
            <form method="post" action="$_SERVER[PHP_SELF]">
                <input type="text" name="zip">
                <button type="submit">send</button>
            </form>
HTMLBLOCK;
 
}  elseif (strlen(trim($_POST['zip'])) !=5 ) {
        print <<<HTMLBLOCK
            <form method="post" action="$_SERVER[PHP_SELF]">
                <input type="text" name="zip">
                <button type="submit">send</button>
            </form>
HTMLBLOCK;
        print "Please enter your zipcode";
    } else {
    print "Your zipcode is " . $zip = $_POST['zip'];
}
?>
0
 Аватар для wmysterio
295 / 244 / 128
Регистрация: 24.12.2014
Сообщений: 708
05.09.2018, 21:33
Цитата Сообщение от Майкл Скоуфилд Посмотреть сообщение
Вы говорили о двух print. Это не есть нормально?
Я говорил о скобках.
0
 Аватар для Майкл Скоуфилд
11 / 10 / 3
Регистрация: 25.09.2015
Сообщений: 238
05.09.2018, 21:39  [ТС]
Я понял, вы имели ввиду то что сказал Mc Coder, только он в более развёрнутом виде написал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2018, 21:39
Помогаю со студенческими работами здесь

Оператор сравнения
Здравствуйте Пожалуйста, подскажите, как оператором сравнения сравнить только часть слова например - чтобы слово test было равно test1,...

Неправильно работает оператор сравнения
Не правильно работает данный участок. Показывает echo 'lol' даже когда сообщение больше двух символов. Почему? if($mess&lt;=2){ echo...

Операторы сравнения PHP
Здравствуйте, хотел узнать: существует ли в PHP такой же оператор сравнения, как в MySql &quot;LIKE&quot;?

Операторы сравнения и логика
есть вот такая штука : if(($row!=0||$row!=0)&amp;&amp;($row&lt;=0)) { ......code }

Простой скрипт сравнения
Ребята, подскажите! Нужен скрипт сравнения как здесь http://rosmobile.ru/compare/ или что-то на подобе. К примеру при выборе из первого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru