PHP — Операторы elseif/else if
- Главная
- Туториалы
- Веб-программирование
- PHP
elseif
, как следует из названия, представляет собой комбинацию if
и else
. Например else
, он расширяет
оператор для выполнения другого оператора в случае, если исходное if
выражение оценивается как false
. Однако, в отличие от else
, это альтернативное выражение будет выполняться только в том случае, если elseif
условное выражение оценивается как true
. Например, следующий код будет отображать a больше, чем b , a равно b или a меньше, чем b :
<?php if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ?>
В одном операторе может быть несколько
s . if
Будет выполнено первое elseif
выражение (если есть), которое имеет значение true
. В PHP вы также можете написать «else if» (двумя словами), и поведение будет идентично поведению «elseif» (одним словом). Синтаксическое значение немного отличается (если вы знакомы с C, это то же самое поведение), но суть в том, что оба приводят к точно такому же поведению.
Оператор elseif
выполняется только в том случае, если предыдущее if
выражение и любые предшествующие elseif
выражения оцениваются как false
, а текущее elseif
выражение оценивается как true
.
Примечание . Обратите внимание, что
elseif
иelse if
будет считаться точно таким же только при использовании фигурных скобок, как в приведенном выше примере. При использовании двоеточия для определения условийif
/elseif
вы не должны разделятьсяelse if
на два слова, иначе PHP завершится с ошибкой синтаксического анализа.
<?php /* Incorrect Method: */ if ($a > $b): echo $a." is greater than ".$b; else if ($a == $b): // Will not compile. echo "The above line causes a parse error."; endif; /* Correct Method: */ if ($a > $b): echo $a." is greater than ".$b; elseif ($a == $b): // Note the combination of the words. echo $a." equals ".$b; else: echo $a." is neither greater than or equal to ".$b; endif; ?>
Оператор условия if else Основы PHP с нуля Урок №9
Главная » Основы PHP » Оператор условия if else Основы PHP с нуля Урок №9
12. 09.2017
пока нет
Всем привет!
Продолжаем изучать основы PHP с нуля!
В этом уроке я расскажу вам об операторе условий if else. В буквальном переводе if означаете «если», а else – «иначе». Сама конструкция if else помогает сверять данные и выводить результат (выводить сообщения, выполнять какую-то команду, перенаправлять пользователя на секретную страницу или впускать в админ-панель). Чтобы научиться писать правильно условия и понять конструкцию if else, я наведу жизненный пример, который очень похож на конструкцию if else.
Вы даете своему мозгу команду: как только звучит будильник (6:00), я должен встать, умыться, почистить зубы, одеться и галопом бежать на работу. Если будильник не звонит в 6:00, значит можно спать, так как на работу бежать не нужно.
Вы заметили конструкцию if else? Условием будет установленное время будильника «6:00». Если будильник звонит, то встаем и бежим на работу, если не звонит (иначе, еще говорят ложь), значит, спим дальше.
Таких примеров жизненных можно навести массу, например: если идет дождь, то сижу дома, если нет дождя, тогда беру мяч и иду играть футбол.
Итак, как же можно записать конструкцию if else? Очень просто.
Пойдем поэтапно и начнем с простого условия – оператор if.
Оператор условия if
Для лучшего понимания я изобразил схему конструкции if в виде рисунка:
Теперь попробуем трансформировать жизненный пример, который я навел выше, в код php.
<?php $weather = "дождь"; //значение if ($weather=="дождь") // условие { echo "Я сижу дома"; // результат } ?>
Если вы сохраните php файл с этим кодом и откроете его через локальный сервер (см. урок №3), то в результате получится:
Я сижу дома
⇒ Разъяснение кода:
В условии я сравнил переменную $weather со значением «дождь» (строка №3). Человеческим языком этот код звучит так: если переменная $weather равна значению «дождь», тогда выводить нужно текст «Я сижу дома«. Кстати, напомню вам (если подзабыли урок №8), что знак равенства обозначается двойным знаком «равно», вот так (==). Если к переменной $weather написать другое значение (строка №2), например, снег, тогда в браузере будет пустая страничка, так как условия не были соблюдены.
→ КОД-ШАБЛОН «КОНСТРУКЦИЯ if»:
<?php if (условие) { Этот код выполнится, если условие верно } ?>
→ Шпаргалка:
Равенство: ==
Пример: if ($a == $b)
Не равенство: !=
Пример: if ($a != $b)
Больше: >
Пример: if ($a > $b)
Меньше: <
Пример: if ($a < $b)
Больше или равно: >=
Пример: if ($a >= $b)
Меньше или равно: <=
Логическое «и»: and
Пример: if ($a ==$b and $c !=$d)
Логическое «или»: or, ||
Пример: if ($a ==$b || $c !=$d)
Оператор условия if-else
Теперь попробуем вывести сообщение, если условия не были соблюдены, а именно, если идет дождь, сижу дома, если нет дождя, беру мяч и иду играть футбол. Для лучшего понимания посмотрим рисунок снизу:
Теперь схему переведем в реальный код:
<?php $weather = "солнце"; //значение if ($weather=="дождь") //условие { echo "Я сижу дома"; //результат если условие верно } else { echo "Я беру мяч и иду играть в футбол"; //результат если условие не верно } ?>
Результат:
Я беру мяч и иду играть в футбол
⇒ Разъяснение кода:
В условии я сравнил переменную $weather со значением «дождь» (строка №3), но так как переменной $weather я присвоил значение «солнце» (строка №2), то условие не было соблюдено (значения не одинаковы), а это значит, что будет работать вторая часть кода (else):
else { echo "Я беру мяч и иду играть в футбол"; //результат если условие не верно }
→ КОД-ШАБЛОН «КОНСТРУКЦИЯ if-else»:
<?php if (условие) { Этот код выполнится, если условие верно } else { Этот код выполнится, если условие не верно } ?>
Двойное условие if-else
Переходим к более сложному – двойное условие if-else.
Давайте на примере создадим проверку пароля и логина.
Цель:
Создать условие проверки логина и пароля. Если пароль или логин не совпадают, вывести сообщение об ошибке.
Приступим.
Создадим для начала две переменные $logo и $password с соответствующими значениями:
<?php $logo = "StepkinBLOG"; //значение $password = 1234567890; //значение ?>
Теперь создадим двойное условие для проверки переменных $logo и $password:
<?php $logo = "StepkinBLOG"; //значение $password = 1234567890; //значение if ($logo =="StepkinBLOG" and $password == 123) //условие { echo "добро пожаловать в админ-панель"; //результат если условие верно } else { echo "Логин или пароль не верный"; //результат если условие не верно } ?>
Обратите внимание, в условии мы разделили две переменные оператором «AND».
Логин или пароль не верный
Если поменяете значение переменной $password на «123» (строка №3), тогда условия будут полностью соблюдены (строка №4):
<?php $logo = "StepkinBLOG"; // значение $password = 123; //значение if ($logo =="StepkinBLOG" and $password == 123) //условие { echo "добро пожаловать в админ-панель"; //результат если условие верно } else { echo "Логин или пароль не верный"; //результат если условие не верно } ?>
Результат:
добро пожаловать в админ-панель
Вложенные конструкции if-else
Вложенная конструкция – это когда внутри конструкции находится еще одна конструкция. Не совсем понятно объяснил? Не беда, на примере все поймете.
Цель:
Создать условие проверки логина и пароля. Если пароль или логин не совпадают, вывести сообщение об ошибке, если совпадают, тогда еще проверить секретное слово, если секретное слово не совпадает, вывести сообщение об ошибке, если совпадает, тогда вывести сообщение «добро пожаловать в админ-панель«.
Приступим:
Создадим для начала три переменные, $logo, $password и $x с соответствующими значениями:
<?php $logo = "StepkinBLOG"; //значение $password = 123; //значение $x = "BlogGOOD"; //значение ?>
Теперь создадим двойное условие для проверки переменных $logo и $password:
<?php $logo = "StepkinBLOG"; //значение $password = 123; //значение $x = "BlogGOOD"; //значение if ($logo =="StepkinBLOG" and $password == 123) //условие №1 { // тут будет еще одно условие с секретным словом } else { echo "Логин или пароль не верный"; //результат если условие не верно } ?>
Теперь под комментарием » // тут будет еще одно условие с секретным словом» (строка №7) пропишите еще одну конструкцию if-else с условием проверки переменной $x:
<?php $logo = "StepkinBLOG"; //значение $password = 123; //значение $x = "Stepa"; //значение if ($logo =="StepkinBLOG" and $password == 123) //условие №1 { // тут будет еще одно условие с секретным словом if ($x = "BlogGOOD") //условие №2 { echo "добро пожаловать в админ-панель"; //результат если условие верно №2 } else { echo "секретное слово не верное"; //результат если условие не верно №2 } } else { echo "Логин или пароль не верный"; //результат если условие не верно №1 } ?>
Так как секретное слово неверное (строка №8), то на экране будет сообщение:
секретное слово неверное
Если вы замените значение переменной $x на «BlogGOOD», тогда и секретное слово будет правдивым:
<?php $logo = "StepkinBLOG"; //значение $password = 123; //значение $x = "BlogGOOD"; //значение if ($logo =="StepkinBLOG" and $password == 123) //условие №1 { // тут будет еще одно условие с секретным словом if ($x = "BlogGOOD") //условие №2 { echo "добро пожаловать в админ-панель"; //результат если условие верно №2 } else { echo "секретное слово неверное"; //результат если условие не верно №2 } } else { echo "Логин или пароль не верный"; //результат если условие не верно №1 } ?>
Так как логин и пароль верный и это значит, что условие было соблюдено, то заработала первая часть кода, где нужно было проверить секретное слово. Так как и секретное слово верное с условием, тогда на экране вы увидите сообщение:
добро пожаловать в админ-панель
→ КОД-ШАБЛОН «ВЛОЖЕННАЯ КОНСТРУКЦИЯ if-else»:
<?php if (условие) { Этот код выполнится, если условие верно if (условие) { Этот код выполнится, если условие верно } else { Этот код выполнится, если условие не верно } } else { Этот код выполнится, если условие не верно } ?>
Оператор условия elseif
Конструкция elseif — это комбинация конструкций if и else, которая поможет проверить несколько условий подряд.
Синтаксис:
<? if (условие) { действие } elseif (условие) { действие } elseif (условие) { действие } else { Действие, если ни один случай не подошел } ?>
Заметьте, в строках №6 и №10 специально два слова написаны вместе «elseif», если вы их разделите пробелом «else if», то код выдаст ошибку.
Давайте приведу рабочий код с выбором учебника по программированию.
Пример:
<? // Используем elseif $stepkinblog = "PHP"; if ($stepkinblog == "C++") { echo "Вы заказали учебник по C++"; } elseif ($stepkinblog == "JavaScript") { echo "Вы заказали учебник по JavaScript"; } elseif ($stepkinblog == "PHP") { echo "Вы заказали учебник по PHP"; } elseif ($stepkinblog == "JAVA") { echo "Вы заказали учебник по JAVA"; } else { echo "Сделайте выбор"; //Действие, если ни один случай не подошел } ?>
Результат:
Вы заказали учебник по PHP
Способ elseif можно записать так же и вложенной конструкцией if else:
<?php // Используем if-else $stepkinblog = "PHP"; if ($stepkinblog == "C++") { echo "Вы заказали учебник по C++"; } else { if ($stepkinblog == "JavaScript") { echo "Вы заказали учебник по JavaScript"; } else { if ($stepkinblog == "PHP") { echo "Вы заказали учебник по PHP"; } else { if ($stepkinblog == "JAVA") { echo "Вы заказали учебник по JAVA"; } else { echo "Зделайте выбор"; //Действие, если ни один случай не подошел } } } } ?>
Результат такой же, вот только запутаться легче (я 2 раза запутался в своем же коде ) .
Дополнение к уроку (пока знать не обязательно):
Есть еще несколько вариантов, как можно записывать конструкцию if else (альтернативный синтаксис).
Про альтернативный синтаксис я подготовлю целый урок, где все растолкую и покажу. Сейчас просто пробежитесь глазами.
Код №1:
<?php $a = 15; if ($a == 15): ?> <h4> Переменная "$а" содержит значение 15 </h4> <?php endif; ?>
Код №2:
<?php $a = 6; if ($a == 5): echo " Переменная содержит значение 5"; elseif ($a == 6): echo " Переменная содержит значение 6"; else: echo " Переменная не содержит значение 5 и не 6"; endif; ?>
Домашнее задание:
Попробуйте в условии вместо равенства (==) поставить неравенство (!=) или попробовать со знаками больше меньше:
<? $num = 1; if ($num <= 10) { echo "переменная меньше или равна 10"; } else { echo "переменная больше 10"; } ?>
а также замените оператор «AND» на «OR».
Все, жду вас на следующих уроках! Подписывайтесь на обновления блога!
Как выполнить несколько действий в троичном блоке — PHP | Саймон Угоржи | Geek Culture
выполнение нескольких действий в тернарном блоке php — Саймон УгоржиЯ написал довольно много туториалов по тернарным операторам.
Мой последний пост был о выполнении нескольких действий в троичном блоке в JavaScript. Сегодня мы сосредоточимся на PHP.
Рассмотрим код ниже
О фрагменте выше
- Используя тернарный оператор, мы можем проверить, пусты ли переменные (!$a && !$b && !$c) .
- Теперь, если переменные пусты, мы переназначим значения для каждой из них и распечатаем их текущие значения.
- Но если переменные не пусты, мы напечатаем «A, B AND C are not empty».
Логика
В моем предыдущем сообщении я объяснил, что если вы хотите выполнить несколько действий в троичном блоке в JavaScript, вы должны использовать запятую ( , ) для разделения действий, но в PHP это довольно другой.
В PHP, если вы используете запятую ( , ) для разделения ваших действий, вы столкнетесь с синтаксической ошибкой.
Таким образом, лучше всего использовать квадратных скобок () для группировки отдельных действий, а затем использовать точку ( . ) для их разделения.
Однако я думаю, что тернарный оператор плохо реализован в PHP, или, возможно, есть другой способ его обработки, или, может быть, это из-за версии PHP, которую я использую.
Вот список вещей, которые могут вас беспокоить при работе с тернарными операторами в PHP.
- Вы не можете использовать оператор echo внутри троичных блоков.
Вы получите синтаксическую ошибку при запуске фрагмента выше.
Однако вы можете использовать другие альтернативы, такие как (print, print_r и var_dump) для вывода вашей переменной.
- Несмотря на то, что ключевое слово print поддерживается, вы все равно не можете вкладывать с ним троичные блоки.
Помните, что: вложение троичного блока похоже на добавление else if и else к вашему условию
Фрагмент выше гласит:
» Если переменная f равна нулю, выход f равен нулю, иначе, если переменная f равна единице, выход f равен единице »
Этот фрагмент не будет выполняться должным образом при его запуске. Вы получите результат от операторов печати, повторенных дважды.
Но если мы заменим ключевое слово print на var_dump или print_r , мы получим правильный вывод.
Код будет выполнен, как и ожидалось, потому что мы ожидаем точного вывода «f равно 0» .
- Вы не можете вложить троичный блок и по-прежнему выполнять в нем несколько действий.
Я думаю, что это самый важный аспект использования тернарного оператора. Но это не работает, и я предпочту, чтобы вы использовали тернарные операторы для небольшой логики кода и использовали нативные операторы if/else для сложной логики. Это не похоже на то, что доступно в JavaScript.
Используйте тернарные операторы только для одного условия в PHP, и вы можете выполнять несколько действий в рамках этого условия. Но если вы хотите добавить else if / else , я рекомендую вам переключиться на собственный оператор if / else .
Возможно, разработчики PHP обновят то, как PHP интерпретирует троичные блоки в будущих обновлениях PHP, но до тех пор я предлагаю вам придерживаться инструкции Native if / else
Я полагаю, что на этом этапе я дал вам понять, что тернарные операторы и как их можно использовать как в PHP, так и в JavaScript.
Спасибо!
php — выбор из SQL с помощью LEFT JOIN и нескольких условий
Задавать вопрос
спросил
Изменено 1 год, 11 месяцев назад
Просмотрено 13 тысяч раз
Я пытаюсь получить сообщения с несколькими фильтрами, моя база данных выглядит следующим образом:
Таблица «Мета»
id | мета_ключ | мета_значение | имя_объекта | object_id |
---|---|---|---|---|
2 | местоположение | новый город | сообщение | 2 |
1 | post_type | секция | сообщение | 2 |
Таблица «Посты»
идентификатор | название | отрывок | описание | мим _тип | статус | родитель | пост _класс | время | сортировка _id | автор _id |
---|---|---|---|---|---|---|---|---|---|---|
2 | тестирование | -1 | сообщение | 2021-04-12 03:06:06 | 0 | 0 | ||||
1 | испытательный пост | некоторое описание | активный | -1 | сообщение | 12. 04.2021 12:09:32 | 0 | 1 |
ВЫБЕРИТЕ p.id,90p.название ИЗ постов р LEFT JOIN мета м ON p.id = m.object_id и m.object_name='post' ГДЕ m.meta_key='location' и m.meta_value='новый город' и m.meta_key='post_type' и m.meta_value='section' группировать по p.id
, и я попробовал приведенный выше SQL, но проблема в том, что я не могу сформировать правильный условный оператор, мне нужно получить все сообщения, которые имеют мета-ключ «тип сообщения» со значением «раздел» и мета-ключ «местоположение» со значением «новый город’.
этот запрос работает с одним фильтром.
ВЫБЕРИТЕ p.id,90p.название ИЗ постов р LEFT JOIN мета м ON p.id = m.object_id и m.object_name='post' ГДЕ m.meta_key='location' и m.meta_value='новый город' группировать по p.id
- PHP
- MySQL
- SQL
1
ВЫБЕРИТЕ p.