Урок 5. Условный оператор if, логические операции и сравнение в PHP

1. Условный оператор if в PHP
2. Операторы сравнения
3. Логические операторы в PHP
4. Тернарный оператор

Условный оператор if в PHP


Главное в действие данное оператора — это условие. if в переводе с английского значит если. Условие принимается в качестве аргумента (то что в скобках). В качестве условия может выступать логическое выражение или логическая переменная. Если проще, то смысл выражения будет такой:
if (условие){
условие выполнено, делаем так
}
else
{
условие не выполнено, делаем иначе
}

Надеюсь логика условной операции понятна. Теперь давайте рассмотрим пример.
<?php 
$a = 5;
$b = 25;

// Теперь внимание! Условие: Если $b больше $a
// Знаки > и < , как и в математике, обозначают больше и меньше
if($b > $a)
{
    // если условие выполнено, то выполняем это действие
    echo "$b больше $a";

}
else 
{
    // если не выполнено, то это
       echo "$a больше или равно $b";
}
?> 


Демонстрация Скачать исходники
В итоге скрипт выведет 25 больше 5. Пример довольно прост. Надеюсь всё понятно. Теперь предлагаю рассмотреть ситуацию сложнее, где нужно соблюсти несколько условий. Каждое новое условие будет содержать после основного условия if() — вспомогательное, которое записывается как else if(). В конце как обычно будет else.

Задача: В школе проводят тестирование. Скрипту нужно высчитать балл, зная условия получения каждой оценки и сам балл школьника. Давайте посмотрим как это записать, и не забудьте прочитать комментарий.

<?php 
$test = 82; // допустим школьник написал тест на 82 балла

// первое условие напишем для пятёрки
if($test > 90)
{
    // если условие соблюдено, то выполняем это действие.
    echo "Оценка 5";
}
// Знак && обозначает "и, объединение", что условие соблюдено если и то, и то верно
// то есть балл меньше 91 и больше 80, тогда 4. Иначе условия считываются дальше
else if ($test < 91 && $test > 80) 
{
    echo "Оценка 4";
}
else if ($test < 81 && $test > 70) 

{
    echo "Оценка 3";
}
else
{
    echo "Надо бы ещё раз написать тест...";
}
?>


Демонстрация Скачать исходники
Наш школьник, который успевает и отдохнуть, и написать нормально тест получает оценку 4! А принцип работы надеюсь понятен.

Возможна и короткая запись работы условной операции, когда Вам нужно действие только в случае соблюдения условия.

$age = 19; // переменная с возрастом

if ($age > 17){
  echo "Всё! Мне можно делать всё что угодно! Мне уже $age!";
}


Вполне себе милый пример короткой записи условной операции.
else
писать не обязательно.

Дальше встаёт другой вопрос: а есть же, наверное, какие-либо другие операторы сравнения?

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


Принцип работы условной операции понятен. Но, как Вы понимаете, способов сравнить намного больше. Давайте посмотрим ниже на таблицу с операторами сравнения.
Пример        Название            Результат
$a == $b    Равно             True, если $a равно $b
$a === $b   Идентично         True, если $a равно $b и обе переменных принадлежат одному типу
$a != $b    Не равно          True, если $a не равно $b
$a === $b   Не идентично      True, если $a не равно $b и оба их типа не совпадают
$a > $b     Больше чем        True, если $a больше, чем $b
$a < $b     Меньше чем        True, если $a меньше, чем $b
$a >= $b    Больше или равно  True, если $a больше или равно $b
$a <= $b    Меньше или равно  True, если $a меньше или равно $b

Теперь рассмотрим операторы на примерах:
$a = 5;

// вопреки привычке = значит присваивание значение переменной, а == как равно
if ($a == 5){
  echo "$a равно 5"; // выведет "5 равно 5"
} else {
  echo "$a не равно 5";
}

if ($a != 6){
  echo "$a не равно 6"; // выведет "5 не равно 6". Нужно в случае отрицания
} else {

  echo "$a каким-то образом равно 6";
}

// с больше и меньше думаю всё понятно. Поэтому пример сложнее
if ($a <= 6){
  echo "$a меньше или равно 6"; // выведет "5 меньше или равно 6"
} else {
  echo "$a больше 6";
}

Логические операторы PHP


Бывают случаи, когда нужно сравнить не одну переменную, а сразу две и более в одном условии. Для этого существуют логические операторы.
Пример       Название          Результат
$a and $b    Логическое 'и'     TRUE если и $a, и $b TRUE.
$a or $b     Логическое 'или'   TRUE если или $a, или $b TRUE.
$a xor $b    Исключающее 'или'  TRUE если $a, или $b TRUE, но не оба.
! $a         Отрицание          TRUE если $a не TRUE.
$a && $b     Логическое 'и'     TRUE если и $a, и $b TRUE.
$a || $b     Логическое 'или'   TRUE если или $a, или $b TRUE.

Уже обратили внимание, что для операций и и или есть дополнительные операторы? Так сделано для того, чтобы расставить приоритеты в сложных операциях сравнения. В таблице логические операторы приведены в порядке приоритета: от меньшего к большему, то есть, например, || имеет больший приоритет, чем or.

Переходим к примерам

$a = 5;
$b = 6;
$c = 7;

// условие: Если 5 не равно 6 (ВЕРНО)  И  6 не равно 7 (ВЕРНО)

if ($a < 6 && $b != $c){
  echo "Действительно так!"; // выведет "Действительно так!" т.к. ОБА условия ВЕРНЫ
} else {
  echo "Одно из условий не верно";
}

// условие: Если 6 не равно 6 (НЕВЕРНО)  ИЛИ  6 не равно 7 (ВЕРНО)
if ($b != 6 || $b != $c){
  echo "Всё так!"; // выведет "Всё так!", т.к. хотя бы ОДНО из условий ВЕРНО
} else {
  echo "Оба условия не верны";
}

Тернарный оператор


К вопросу тернарного кода я предлагаю Вам вернуться позже. Вовсе не упомянуть его я не мог, так как это важная конструкция, которая существенно сокращает размер кода. Предлагаю сразу рассмотреть код.

Суть кода: (условие) ? значение a если true : значение a если false

Таким образом, мы сокращаем запись оператора if. Однако, данная операция действительна только с присваиванием значений переменной. Теперь давайте рассмотрим готовый пример.

<?php
// Пример использования тернарного оператора
$settings = (empty($_POST['settings'])) ? 'По умолчанию' : $_POST['settings'];

// Приведенный выше код аналогичен следующему блоку с использованием if/else
if (empty($_POST['settings'])) {
    $settings = 'По умолчанию'; // Если ничего не передано, то оставляем "По умолчанию"
} else {

    $settings = $_POST['settings']; // Если передано, то $settings присваивается переданное значение.
}
?>


Прочитайте комментарии к коду и всё должно быть понятно.

Спасибо за внимание!

tradebenefit.ru

Оператор IF в PHP | Условие IF ELSE, несколько условий, альтернативный синтаксис

Оператор IF позволяет выполнить кусок кода только при в случае выполнения некоторых условий.

Например, мы можем уведомить пользователя, что дорогие товары доставляются бесплатно:

<?php
    $price = 1000;

    // Этот код выполнится только если $price > 500
    if($price > 500)
        echo 'Бесплатная доставка!<br>';

    // А этот код выполнится в любом случае
    echo 'Спасибо за заказ!';
?>

Как видите, IF выполняет следующую за ним команду, если выражение в круглых скобках принимает значение true.

Для выполнения нескольких команд нужно поместить их в фигурные скобки {}:

<?php
    $price = 120;

    // Этот код выполнится только при $price > 100
    if($price > 100)
    {
        $price -= 10;
        echo 'Ваша скидка 10р';
    }

    // А этот код выполнится в любом случае
    echo 'Спасибо за заказ!';
?>

Конструкция IF ELSE

Условие может быть выполнено или невыполнено. Иногда возникает необходимость выполнить разный код для каждой из этих ситуаций. Для этого существует конструкция else:

<?php
    // Для одной команды
    if(100 > 50)
        echo 'Условие верно.<br>';
    else
        echo 'Условие неверно.<br>';

    // Для нескольких команд
    if(200 > 100)
    {
        echo 'Условие ';
        echo 'верно.';
    }
    else
    {
        echo 'Условие ';
        echo 'неверно.';
    }
?>

Существуют разные стандарты оформления PHP-кода. Если показанный выше кажется вам слишком громоздким, можете писать более компактно:

<?php
    if(200 > 100) {
        echo 'Условие ';
        echo 'верно.';
    } else {
        echo 'Условие ';
        echo 'неверно.';
    }
?>

Несколько условий с ELSEIF

Но и этим функционал IF не ограничивается. С помощью конструкции elseif мы можем добавлять неограниченное количество условий. Выполнено будет только первое из подходящих условий, остальные будут проигнорированы.

Попробуем сделать систему, которая сама рассчитывает наценку на товар в зависимости от его цены:

<?php
    $price = 150;

    if($price < 50)
        $price *= 1.3; // Умножаем цену на 30%
    elseif($price < 100)
        $price *= 1.2; // Умножаем цену на 20%
    elseif($price < 200)
        $price *= 1.1; // Умножаем цену на 10%
    else
        $price *= 1.05; // Умножаем цену на 5%

    echo 'Стоимость товара: ', $price;
?>

Результат в браузере:

Стоимость товара: 165

Как видите, выполнилось только третье условие. Первые два не соответствовали правилам, а последнее пропущено, поскольку уже выполнилось предыдущее.

Альтернативный синтаксис IF ELSE ENDIF

Нередко возникают ситуации, когда использование фигурных скобок делает код более запутанным. В этом случае удобно использовать альтернативный синтаксис:

<?php if($price > 100): ?>
	<div></div>
	<div></div>
<?php elseif($price < 50): ?>
	<div></div>
	<div></div>
<?php else: ?>
	<div></div>
	<div></div>
<?php endif; ?>

Используется такой синтаксис чаще всего в html-шаблонах, чтобы избавиться от фигурных скобок. Для сравнения, тот же кусок кода в обычном синтаксисе:

<?php if($price > 100) { ?>
	<div></div>
	<div></div>
<?php } elseif($price < 50) { ?>
	<div></div>
	<div></div>
<?php } else { ?>
	<div></div>
	<div></div>
<?php } ?>

Выглядит уже менее приятно, а при наличии других операторов с фигурными скобками будет совсем беда. Поэтому при формировании HTML-страниц не забывайте про альтернативный синтаксис.

www.programulin.ru

PHP :: Условные операторы

base06 11

Курс PHP для начинающих Внимание! Данный урок устарел!
Переходите к новому уроку «Условия в PHP».

Двумя основными операторами, обеспечивающими создание структур ветвления на основе условий, являются if и switch. Наиболее широко применяется оператор if, который используется в структурах перехода по условию. С другой стороны, в определенных ситуациях, особенно если приходится обеспечивать переход по одной из многочисленных ветвей в зависимости от значения единственного выражения, а применение целого ряда операторов if приводит к усложнению кода, более удобным становится оператор switch.

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

Курс PHP для начинающих

Логические операции

Логические операции позволяют комбинировать логические значения (называемые также истинностными) для получения новых логических значений. Как показано в таблице ниже, в языке PHP поддерживаются стандартные логические операции (and, or, not и xor), причем первые две имеют альтернативные версии.

Логические операции PHP
Операция Описание
and Операция, результат которой принимает истинное значение тогда и только тогда, когда оба ее операнда имеют истинное значение
or Операция, результат которой принимает истинное значение, если один из ее операндов (или оба операнда) имеет истинное значение
! Операция, результат которой принимает истинное значение, если ее единственный операнд (задаваемый справа от знака операции) имеет ложное значение, и ложное значение, если операнд имеет истинное значение
xor Операция, результат которой принимает истинное значение, если любой из ее операндов (но не оба одновременно) имеет истинное значение
&& То же, что и операция and, но связывает свои операнды сильнее по сравнению с этой операцией
|| То же, что и операция or, но связывает свои операнды сильнее по сравнению с этой операцией

Операции && и || должны быть знакомы программистам, работающим с языком C. Операцию ! обычно называют not, поскольку она становится отрицанием для того операнда, к которому применяется.

Чтобы проверить, имеют ли оба операнда значение TRUE, следует использовать оператор AND, который можно записать и как двойной амперсанд (&&). Оба оператора, AND и &&, являются логическими, их единственное отличие в том, что оператор && имеет более высокий приоритет, чем оператор AND. То же самое относится к операторам OR и ||. Оператор AND возвращает TRUE, только если оба операнда имеют значение TRUE; в противном случае возвращается значение FALSE.

Чтобы проверить, имеет ли хотя бы один операнд значение TRUE, следует использовать оператор OR, который можно записать и как двойную вертикальную линию (||). Этот оператор возвращает TRUE, если хотя бы один из операндов имеет значение TRUE.

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

Проверить, имеет ли значение TRUE только один из операндов (но не оба сразу), позволяет оператор XOR. Этот оператор возвращает значение TRUE, если один и только один из операндов имеет значение TRUE. Если оба операнда имеют значение TRUE, оператор вернет значение FALSE.

Инвертировать логическое значение можно с помощью оператора NOT, который часто записывается и в виде восклицательного знака (!). Он возвращает значение TRUE, если операнд имеет значение FALSE, и значение FALSE, если операнд имеет значение TRUE.

В таблице ниже приведены некоторые логические выражения и их результаты:

Логические выражения и их результаты
Пример логического выражения Результат
TRUE AND TRUE TRUE
FALSE AND TRUE FALSE
TRUE OR FALSE TRUE
FALSE OR FALSE FALSE
TRUE XOR TRUE FALSE
TRUE XOR FALSE TRUE
!TRUE FALSE
!FALSE TRUE
Курс PHP для начинающих

Операции сравнения

В таблице ниже показаны операции сравнения, которые могут применяться либо с числами, либо со строками:

Операции сравнения
Операция Наименование Описание
== Равно Операция, результат которой принимает истинное значение, если ее операнды равны друг другу, в противном случае принимает ложное значение
!= Не равно Операция, результат которой принимает ложное значение, если ее операнды равны друг другу, в противном случае принимает истинное значение
< Меньше Операция, результат которой принимает истинное значение, если левый операнд меньше правого, в противном случае принимает ложное значение
> Больше Операция, результат которой принимает истинное значение, если левый операнд больше правого, в противном случае принимает ложное значение
<= Меньше или равно Операция, результат которой принимает истинное значение, если левый операнд меньше или равен правому, в противном случае принимает ложное значение
>= Больше или равно Операция, результат которой принимает истинное значение, если левый операнд больше или равен правому, в противном случае принимает ложное значение
=== Идентично Операция, результат которой принимает истинное значение, если оба операнда равны друг другу и относятся к одному и тому же типу, в противном случае принимает ложное значение

Необходимо следить за тем, чтобы не допустить одну весьма распространенную ошибку — не путать операцию присваивания (=) с операцией сравнения (==).

Приоритет операций

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

Код PHP
$var1 = 14; $var2 = 15;

if (($var1 < $var2) && ($var2 < 20))
    echo '$var2 больше $var1 но меньше 20';

можно переписать как

Код PHP
...

if ($var1 < $var2 && $var2 < 20)
   ...
Курс PHP для начинающих

Инструкция if — else

Инструкция if позволяет исполнить блок кода, если условное выражение в этой инструкции имеет значение TRUE; в противном случае блок кода не исполняется. В качестве условия может применяться любое выражение, включающее проверки на ненулевое значение, равенство, NULL с участием переменных и значений, возвращаемых функциями.

Не важно, какие отдельные условные выражения составляют условное предложение. Если условие истинно, исполняется программный код, заключенный в фигурные скобки ({}). В противном случае PHP игнорирует его и переходит к проверке второго условия, проверяя все условные предложения, которые вы записали, пока не наткнется на инструкцию else, после чего автоматически выполнит этот блок. Инструкция else не является обязательной.

Синтаксис инструкции if:

if (условное выражение)
{
    блок программного кода;
}

Если в результате вычисления условного выражения получается значение TRUE, то блок программного кода, расположенный после него, будет исполнен. В следующем примере если переменная $username имеет значение ‘Admin’, будет выведено приветственное сообщение. В противном случае ничего не произойдет:

Код PHP
$username = "Admin";

if ($username == "Admin") 
{
	echo 'Добро пожаловать на страницу администратора.';
}

Если блок программного кода содержит только одну инструкцию, то фигурные скобки необязательны, тем не менее, хорошая привычка – ставить их всегда, поскольку с ними код легче читается и редактируется.

Необязательная инструкция else – это блок программного кода, исполняемый по умолчанию, когда условное выражение возвращает значение FALSE. Инструкцию else нельзя использовать отдельно от инструкции if, поскольку у else нет собственного условного выражения. То есть else и if в вашем коде всегда должны быть вместе:

Инструкции if и else
$username = "no admin";

if ($username == "Admin") 
{
	echo 'Добро пожаловать на страницу администратора.';
}
else
{
	echo 'Добро пожаловать на страницу пользователя.';
}

Не забывайте закрывать фигурной скобкой блок кода в инструкции if, если вы поставили фигурную скобку в начале блока. В блоке else тоже должны быть открывающая и закрывающая фигурные скобки, как в блоке if.

Все это хорошо, кроме случаев, когда вам требуется проверить несколько условий подряд. Для этого подойдет инструкция elseif. Она позволяет проверять дополнительные условия, пока не будет найдено истинное или достигнут блок else. У каждой инструкции elseif есть собственный блок кода, размещаемый непосредственно после условного выражения инструкции elseif. Инструкция elseif идет после инструкции if и перед инструкцией else, если таковая имеется.

Синтаксис инструкции elseif немного сложнее, но следующий пример поможет вам разобраться в нем:

Проверка нескольких условий
$username = "Guest";

if ($username == "Admin")
{
	echo 'Добро пожаловать на страницу администратора.';
}
elseif ($username == "Guest") 
{
	echo 'Просмотр не доступен.';
}
else 
{
	echo 'Добро пожаловать на страницу пользователя.';
}

Здесь проверяется два условия, и, в зависимости от значения переменной $username, выполняются разные действия. И еще есть возможность что-то сделать, если значение переменной отличается от первых двух.

Курс PHP для начинающих

Тернарный оператор ?:

Оператор ?: – это тернарный (трехместный) оператор, который принимает три операнда. Он работает аналогично инструкции if, но возвращает значение одного из двух выражений. Выражение, которое будет вычисляться, определяется условным выражением. Двоеточие (:) служит разделителем выражений:

(условие) ? вычислить_если_условие_истинно : вычислить_если_условие_ложно;

В примере ниже проверяется значение, и в зависимости от его значения (TRUE или FALSE) возвращаются разные строки:

Создание сообщения с помощью оператора ?:
$logged_in = TRUE;
$user = "Игорь";

$banner = (!$logged_in) ? "Зарегистрируйтесь!" : "С возвращением, $user!";
echo $banner;

Вполне очевидно, что приведенный выше оператор эквивалентен следующему оператору:

Код PHP
$logged_in = TRUE;
$user = "Игорь";

if (!$logged_in)
{
	$banner = "Зарегистрируйтесь!";
}
else
{
	$banner =  "С возвращением, $user!";
}
echo $banner;
Курс PHP для начинающих

Инструкция switch

Инструкция switch сравнивает выражение с несколькими значениями. Как правило, в качестве выражения используется переменная, в зависимости от значения которой должен быть исполнен тот или иной блок кода. Например, представим себе переменную $action, которая может иметь значения «ADD» (добавить), «MODIFY» (изменить) и «DELETE» (удалить). Инструкция switch позволяет легко определить блок кода, который должен исполняться для каждого из этих значений.

Чтобы показать разницу между инструкциями if и switch, выполним проверку переменной на соответствие нескольким значениям. В примере ниже приведен программный код, реализующий такую проверку на базе инструкции if, а в последующем примере – на базе инструкции switch:

Проверка на соответствие одному из нескольких значений (инструкция if)
if ($action == "ADD") {
	echo "Выполнить добавление.";
	echo "Количество инструкций в каждом блоке не ограничено.";
}
elseif ($action == "MODIFY") {
	echo "Выполнить изменение.";
}
elseif ($action == "DELETE") {
	echo "Выполнить удаление.";
}
Проверка на соответствие одному из нескольких значений (инструкция switch)
switch ($action) {
	case "ADD":
		echo "Выполнить добавление.";
		echo "Количество инструкций в каждом блоке не ограничено.";
		break;
	case "MODIFY":
		echo "Выполнить изменение.";
		break;
	case "DELETE":
		echo "Выполнить удаление.";
		break;
}

Инструкция switch берет значение, стоящее рядом с ключевым словом switch, и начинает сравнивать его со всеми значениями, стоящими рядом с ключевыми словами case, в порядке их расположения в программе. Если соответствие не найдено, не исполняется ни один из блоков. Как только совпадение обнаружено, выполняется соответствующий блок кода. Расположенные ниже блоки кода также исполняются – до конца инструкции switch или до ключевого слова break. Это удобно для организации процесса, состоящего из нескольких последовательных шагов. Если пользователь уже проделал некоторые шаги, он сможет продолжить процесс с того места, на котором прервался.

Выражение рядом с инструкцией switch должно возвращать значение элементарного типа, например число или строку. Массив можно задействовать только в виде его отдельного элемента, имеющего значение элементарного типа.

Выбор по умолчанию

Если значение условного выражения не совпало ни с одним из предложенных в инструкциях case вариантов, инструкция switch и в этом случае позволяет что-то сделать, примерно как инструкция else конструкции if, elseif, else. Для этого нужно последним вариантом в списке выбора сделать инструкцию default:

Создание сообщения об ошибке с помощью инструкции default
$action = "REMOVE";

switch ($action) {
	case "ADD":
		echo "Выполнить добавление.";
		echo "Количество инструкций в каждом блоке не ограничено.";
		break;
	case "MODIFY":
		echo "Выполнить изменение.";
		break;
	case "DELETE":
		echo "Выполнить удаление.";
		break;
	default:
	    echo "Ошибка: команда $action не допустима, ".
		     "можно использовать только команды ADD, MODIFY и DELETE.";
}

Кроме обычного, инструкция switch поддерживает альтернативный синтаксис – конструкцию из ключевых слов switch/endswitch, определяющих начало и конец инструкции вместо фигурных скобок:

Инструкция switch завершается ключевым словом endswitch
switch ($action):
	case "ADD":
		echo "Выполнить добавление.";
		echo "Количество инструкций в каждом блоке не ограничено.";
		break;
	case "MODIFY":
		echo "Выполнить изменение.";
		break;
	case "DELETE":
		echo "Выполнить удаление.";
		break;
	default:
	    echo "Ошибка: команда $action не допустима, ".
		     "можно использовать только команды ADD, MODIFY и DELETE.";
endswitch;

Прерывание исполнения

Если должен быть исполнен только блок кода, соответствующий определенному значению, то в конце этого блока следует вставить ключевое слово break. Интерпретатор PHP, встретив ключевое слово break, перейдет к исполнению строки, расположенной после закрывающей фигурной скобки инструкции switch (или ключевого слова endswitch). Но если не использовать инструкцию break то проверка продолжается в последующих ветвях case конструкции switch. Ниже показан пример:

Что происходит при отсутствии операторов break
$action="ASSEMBLE ORDER";

switch ($action) {
	case "ASSEMBLE ORDER":
		echo "Собрать заказ.<br>";
	case "PACKAGE":
		echo "Упаковать.<br>";
	case "SHIP":
		echo "Доставить заказчику.<br>";
}

Если переменная $action будет иметь значение «ASSEMBLE ORDER», результат работы этого фрагмента будет следующим:

Собрать заказ.
Упаковать.
Доставить заказчику.

Если предположить, что стадия сборки уже была пройдена, и переменная $action имеет значение «PACKAGE», то будет получен следующий результат:

Упаковать.
Доставить заказчику.

Иногда, отсутствие операторов break бывает полезным, как в приведенном примере, где формируются стадии заказа, но в большинстве случаев следует использовать этот оператор.

Типы данных Циклы Оценить статью: 12345678910 Меня зовут Александр Ерохин. Это моя домашняя страница: Google+.

addphp.ru

PHP: elseif/else if — Manual

Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRomanianRussianSpanishTurkishOther

elseif/else if

(PHP 4, PHP 5, PHP 7)

Конструкция elseif, как ее имя и говорит есть сочетание if и else. Аналогично else, она расширяет оператор if для выполнения различных выражений в случае, когда условие начального оператора if эквивалентно FALSE. Однако, в отличие от else, выполнение альтернативного выражения произойдет только тогда, когда условие оператора elseif будет являться равным TRUE. К примеру, следующий код может выводить a больше, чем b, a равно b или a меньше, чем b:

<?php
if ($a > $b) {
    echo "a больше, чем b";
} elseif ($a == $b) {
    echo "a равен b";
} else {
    echo "a меньше, чем b";
}
?>

Может быть несколько elseif в одном выражении if. Первое выражение elseif (если оно есть) равное TRUE будет выполнено. В PHP вы также можете написать ‘else if’ (в два слова), и тогда поведение будет идентичным ‘elseif’ (в одно слово). Синтаксически значение немного отличается (если вы знакомы с языком С, это то же самое поведение), но в конечном итоге оба выражения приведут к одному и тому же результату.

Выражение elseif выполнится, если предшествующее выражение if и предшествующие выражения elseif эквивалентны FALSE, а текущий elseif равен TRUE.

Замечание: Заметьте, что elseif и else if будут равнозначны только при использовании фигурных скобок, как в примерах выше. Если используются синтаксис с двоеточием для определения условий if/elseif, вы не должны разделять else if на два слова, иначе это вызовет фатальную ошибку в PHP.

<?php/* Некорректный способ: */
if($a > $b):
    echo $a." больше, чем ".$b;
else if($a == $b): // Не скомпилируется.
    echo "Строка выше вызывает фатальную ошибку.";
endif;/* Корректный способ: */
if($a > $b):
    echo $a." больше, чем ".$b;
elseif($a == $b): // Заметьте, тут одно слово.
    echo $a." равно ".$b;
else:
    echo $a." не больше и не равно ".$b;
endif;?>
Vladimir Kornea

12 years ago

The parser doesn't handle mixing alternative if syntaxes as reasonably as possible.

The following is illegal (as it should be):

<?
if($a):
    echo $a;
else {
    echo $c;
}
?>

This is also illegal (as it should be):

<?
if($a) {
    echo $a;
}
else:
    echo $c;
endif;
?>

But since the two alternative if syntaxes are not interchangeable, it's reasonable to expect that the parser wouldn't try matching else statements using one style to if statement using the alternative style. In other words, one would expect that this would work:

<?
if($a):
    echo $a;
    if($b) {
      echo $b;
    }
else:
    echo $c;
endif;
?>

Instead of concluding that the else statement was intended to match the if($b) statement (and erroring out), the parser could match the else statement to the if($a) statement, which shares its syntax.

While it's understandable that the PHP developers don't consider this a bug, or don't consider it a bug worth their time, jsimlo was right to point out that mixing alternative if syntaxes might lead to unexpected results.

qualitycoder

5 years ago

The reason 'else if' (with a space) works with traditional syntax and not colon syntax is because of a technicality.

<?php
  if($var == 'Whatever') {

  } else if(

$var == 'Something Else') {

  }

?>

In this instance, the 'else if' is a shorthand/inline else statement (no curly braces) with the if statement as a body. It is the same things as:

<?php
  if($var == 'Whatever') {

  } else {
      if($var == 'Something Else') {

      }
  }
?>

If you were to write this with colon syntax, it would be:

<?php
  if($var == 'Whatever'):

  else:
      if($var == 'Something Else'):

      endif;
  endif;
?>

M.H.S

5 days ago

Bad coad:
<?phpif ($condition_1 === true)
{
}

if (

$condition_1 === false && $condition_2 === true)
{
}

if (

$condition_1 === false && $condition_2 === false)
{
}?>

Good coad:
<?phpif ($condition_1) :
elseif ($condition_2) :
else:
endif;?>
Anonymous

3 years ago

If you find yourself using a lot of "elseif"s like this

<?php
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} elseif (...) {
    echo "...";
} elseif (...) {
    echo "...";
} elseif (...) {
    echo "";
} elseif (...) {
    echo "";
} else {
    echo "a is smaller than b";
}
?>

then you should look at using switch instead:
http://php.net/manual/en/control-structures.switch.php

www.php.net

Подробнее о конструкции if | PHP

В этой статье мы более подробно рассмотрим использование в PHP логических операторов, конструкции if и расскажем о различных способах ее записи. Для начала разберем, как работать с конструкцией if, если у вас имеется больше одного условия.

Конструкция if может быть вложенной:

<?php
$number = 10;

if($number > 0)
    if($number < 20)
        echo "Число больше нуля, но меньше двадцати!";
?>

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

<?php
$number = 10;

if(($number > 0) and ($number < 20))
    echo " Число больше нуля, но меньше двадцати!";
?>

Какой способ записи оператора цикла PHP использовать, зависит от ситуации и от ваших личных предпочтений. В предыдущей статье мы рассмотрели правила использования конструкции else. В PHP есть еще одна специальная конструкция – else if.

Она содержит в себе конструкции if и else, и может использоваться следующим образом:

<?php
$number = 10;

if($number > 20)
    echo "Число больше двадцати!";
elseif($number > 10)
    echo "Число больше десяти!";
else
    echo "Кажется, это число слишком мало..."
?>

Данная конструкция оператора цикла PHP не реализует ничего нового, кроме другого синтаксиса. Точно также можно использовать конструкцию else, а следом еще одну конструкцию if.

При разработке на PHP в конструкциях типа if или while помимо стандартных блоков кода, заключенных в фигурные скобки, можно использовать альтернативный синтаксис. Он не особо популярен, но рекомендуем с ним ознакомиться:

<?php
$number = 10;
if($number == 10):
    echo "Число – 10!";
else:
    echo "Число – не  10… ";
    echo "Но почему?";
endif;
?>

Если такой вариант вам нравится больше – спокойно используйте его. Нет никакой принципиальной разницы.

Тернарный оператор

Бывают случаи, когда использование полноценной конструкции if является избыточным. Например, нам нужно подставить необходимое слово к выходному значению переменной в зависимости от того, добавил ли пользователь товары в корзину:

<?php
$numberOfItems = 2;
$output = "В вашей корзине ";
if($numberOfItems > 0)
    $output .= "есть товары";
else
    $output .= "нет товаров";
$output .= "!";
echo $output;
?>

Используя тернарный оператор PHP, мы можем сократить эту запись:

<?php
$numberOfItems = 0;
$output = "В вашей корзине " . (($numberOfItems > 0) ? "есть товары" : "нет товаров") . "!";
echo $output;
?>

Такая запись существенно сокращает количество строк кода. Тернарный оператор PHP – сокращенная версия конструкций if и else, записанная в одну строку. Условие, заданное после двух скобок, это и есть аналог if. После ставится вопросительный знак, за которым прописывается следующее условие: удовлетворяет ли конструкции условие TRUE.

Затем ставится двоеточие, за которым прописывается следующее условие: удовлетворяет ли конструкции условие FALSE. Так как все эти условия пишутся в одной строке с оператором присваивания, мы ставим две скобки, чтобы PHP определил, что строчка содержит условие.

Это всего лишь альтернативный вариант записи, используйте его на свое усмотрение.

Данная публикация представляет собой перевод статьи «More if statements» , подготовленной дружной командой проекта Интернет-технологии.ру

www.internet-technologies.ru

Условный оператор if в PHP и операторы сравнения.

Как и в любом языке программирования, при работе с PHP очень часто приходится обрабатывать различные условные операции.

Например, если выполняется какое-то условие, нужно выполнить какой-то набор действий. Иначе, если выполняется какое-то другое условие, то нужно выполнить какой-то другой набор действий.

Для решения этой задачи: создания таких условных конструкций в PHP есть так называемый условный оператор if.

Давайте сейчас с ним познакомимся.

В языке PHP условный оператор пишется следующим образом.

if (условие) {
    действие1;
    действие2;
    ...
}
else {
    действия иначе;
}

«действия иначе» выполняются в том случае, если условие для оператора if оказалось ложным.

Задача «условия» возвращать либо истину (true), либо ложь (false).

Давайте напишем простую программу, в которой будут проверяться какие-то условия и в зависимости от них, выполняться какие-то действия.

$a = 1;
$b = 5;
if ($a < $b) {
    echo 'a меньше b';
}
else {
    echo 'a больше b';
}

Если выполнить этот код, то мы получим сообщение, что «a меньше b».

Условие else необязательное условие и его может вообще не быть. 

Бывают также ситуации, что нужно проверить сразу несколько условий. 

$a = 5;
$b = 5;
if ($a < $b) {
    echo 'a меньше b';
}
else {
    echo 'a больше b';
}

Если сейчас выполнить такую программу, то мы получим сообщение, что ‘a больше b’. Но, на самом деле у нас a не больше b, а равно b.

Для того, чтобы обработать такое промежуточное условие, есть специальная конструкция else if.

$a = 5;
$b = 5;
if ($a < $b) {
    echo 'a меньше b';
}
else if($a == $b) {
    echo 'a равно b';
}
else {
    echo 'a больше b';
}

При выполнении этого кода мы уже получаем сообщение, что ‘a равно b’, что уже соответствует действительности.

Конструкций else if может быть сколько угодно. 

Вот такие основы работы с оператором if в PHP. Ничего сложного в этом в PHP нет. Это просто проверка каких-то условий и выполнение каких-то действий, которые соответствуют этому условию.

webkyrs.info

Условный оператор в PHP

Условный оператор в PHP

Об условном операторе я уже писал, когда говорил о JavaScript. Разумеется, в PHP также этот оператор существует, и, разумеется, он является наиважнейшим оператором как и, пожалуй, в большинстве языков программирования. И об условном операторе в PHP я и поведаю в этой статье.

Синтаксис условного оператора в PHP такой:

if (условие) {
//Блок операторов
}
else {
//Блок операторов
}

Как видите, синтаксис точно такой же, как и в JavaScript. И вообще этот синтаксис переходит от языка к языку, и он очень удобен, прост и понятен. Однако, если PHP — это Ваш первый язык, то поясняю. Вначале идёт ключевое слово «if«, дальше в круглых скобках задаётся условие (результат которого, разумеется, либо true — истина, либо false — ложь). После условия идут фигурные скобки, в которых идёт блок операторов. И, наконец, необязательный блок else, который будет выполнен, если условие будет ложным (то есть вернёт false). Давайте разберём простейший пример на условный оператор:

<?php
  $x = 4;
  if ($x > 0)
    echo "Число X положительное";
  else
    if ($x == 0)
      echo "Число X равно нулю";
    else
      echo "Число X отрицательное";
?>

Давайте разберём эту простую задачу. Вначале скрипта объявляется переменная x и присваивается значение «4«. Затем идёт условие, где мы «если переменная x больше нуля» выводим сообщение, иначе (то есть если переменная x НЕ больше нуля) если переменная x равно 0, то выводим сообщение, что «Число X равно нулю«, иначе выводим, что число отрицательное. В общем, я постарался максимально подробно изложить алгоритм этой задачи. Надеюсь, Вы поняли принцип. Возможно, что некоторые из Вас спросят: «А куда делись фигурные скобки?» В данном случае они необязательны, потому что мы используем в каждом блоке всего один оператор (либо один оператор echo, либо один оператор IF). А вот если бы мы использовали два и более оператора, то нам пришлось бы уже ставить фигурные скобки.

И давайте ещё один пример рассмотрим, а, заодно, я познакомлю Вас с очень важной функцией в PHPisset(), которая проверяет существование переменной и возвращает true, если переменная существует, либо false, если переменная не существует.

<?php
  $v = "some";
  if (isset($v))
    echo "Переменная v существует и её значение - $v";
  else
    echo "Переменной v не существует.";
  if (isset($abcdef)) {
    echo "Такая переменная существует!";
    echo "Странно... Ведь мы её не объявляли";
  }
  else
    echo "Данной переменной не существует...";
?>

В этом примере мы вновь объявили переменную со строковым значением «some«. Дальше мы проверяем, если такая переменная существует (функция isset()), то сообщаем об этом, а если не существует (то есть функция isset() вернула false), то выводим другое сообщение. Дальше мы пишем ещё один условный оператор, в котором проверяем существование переменной abcdef. Также обратите внимание, что я поставил фигурные скобки, так как в блоке уже два оператора (два echo). Также обратите внимание, что если Вы используете двойные кавычки («), то такие строки «значение — $v» превращаются в «значение — some«, то есть подставляется значение переменной. А если Вы используете одинарные кавычки (), то значение переменной не подставляется.

Также бывают сложные условия: с логическим И (&&) и/или логическим ИЛИ (||):

<?php
  $ab = 17;
  $cd = 19;
  $bool = true;
  if (($ab - $cd < 0) && ($bool))
    echo "Разница переменных меньше нуля и переменная bool = true";
?>

Разумеется, могут быть очень сложные условия с кучей логических И и логических ИЛИ. В общем, думаю, этот пример не нуждается в пояснении. Главное надо понять, что оператор с логическим И вернёт в итоге true только тогда, когда все условия истинны, а если используется логическое ИЛИ, то чтобы вернулось true, необходимо выполнение хотя бы одного из условий. Но и тут важно понимать, что бывают, например, такие условия:

if ((($a > 0) && ($b < 0)) || ($c == 0))

То есть здесь условие вернёт true, если (($a > 0) И ($b <0)) ИЛИ ($c == 0). В общем, надо научиться читать условия, и обращайте внимание на расстановку скобок, так как именно они задают приоритеты выполнения операций. Советую Вам с последним условием поработать. Напишите простой скрипт, присвойте трём переменным значения и посмотрите, что возвращает данное условие. Потом меняйте значениях переменных и следите за изменениями. Так Вы быстрее получите навык чтения сложных условий, а они, поверьте мне, используются очень часто не только в PHP, но и в других языках программирования.

  • Условный оператор в PHP Создано 02.11.2010 12:33:13
  • Условный оператор в PHP Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

myrusakov.ru