Ваш город: Не указано

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

Условный оператор в программировании позволяет выполнять определенные действия в зависимости от истинности или ложности заданного выражения.

Общая структура выглядит следующим образом:

<?php
$a=3;
$b=5;
if ($a<$b){
$max=$b;
} else {
$max=$a;
}
echo $max;
?>

Попробуем разобрать этот код на отдельные части.

Итак, вначале указывается ключевое слово if, что в переводе с английского означает "Если". Затем в круглых скобках указывается условие. В данном случае сравниваются два числа. После условия прописывается определенное действие. В нашем случае в переменную $max заносится максимальное значение (переменная $b). Если нужно выполнить какое-либо действие в других случаях, когда условие неверно, можно поставить ключевое слово else, что в переводе с английского означает "Иначе", "В других случаях", "В противном случае" и т.д.

Открывающаяся фигурная скобка { обозначает начало участка кода, а закрывающаяся }, соответственно, конец участка кода. Таким образом можно для одного условия указать несколько действий. По сути, эти фигурные скобки группируют записанные между ними действия.

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

<?php
$a=3;
$b=5;
if ($a<$b)
$max=$b;
else
$max=$a;
echo $max;
?>

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

Для сравнения можно использовать следующие знаки:

  • < - меньше
  • <= - меньше, либо равно
  • == - равно
  • === - точное равенство
  • > - больше
  • >= - больше, либо равно
  • != - не равно
  • !== - точное неравенство

Получается, если при сравнении воспользоваться одним знаком равенства ($a=$b), то первая переменная присвоит значение второй переменной.

Если воспользоваться двумя знаками равенства ($a==$b), то мы проверяем только значения, чтобы они были равны. Однако, если логическое отрицание сравнить с нулем (false==0), то это равенство тоже выполнится, так как язык PHP не является строгим, и он преобразует логический тип в числовой.

Если воспользоваться тремя знаками равенства ($a===$b), то мы проверяем значения и тип переменных, чтобы они были равны. Таким образом, если снова логическое отрицание сравнить с нулем (false===0), то это равенство уже не выполнится.

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

<?php
$a=1;
$b=true;
echo ($a==$b);
?>

Получается, если условие верно - выводится 1, если не верно - ничего не выводится.

Можно даже сравнить с электроникой. Электрический сигнал или есть, или его нет. Обычно он обозначается 0 или 1.

Чтобы и нам явно отобразить 0 или 1, достаточно перед результатом указать тип (int):

<?php
$a=3;
$b=5;
echo (int) ($a<$b);
?>

Однако в условиях истинность утверждения определяется с помощью true и false (что в переводе означает "истина" и "ложь" или "верно" и "неверно" и т.д.):

<?php
$a=3;
$b=5;
if (($a<$b)==true){
$max=$b;
} else {
$max=$a;
}
echo $max;
?>

Конечно, добавление true в этом примере - это уже лишнее, однако иногда оно очень сильно пригождается.

Любое отрицание можно указать с помощью восклицательного знака (!).

<?php
$a=3;
$b=5;
if (!($a<$b)){
echo 'a<b';
} else {
echo 'a>b';
}
?>

Задания:

  • Дан номер месяца (1-12). Отобразить в виде слова этот месяц. Если такого месяца не существует - отобразить ошибку.
  • Найдите среднее арифметическое, состоящее из 5 чисел.

Ответы к заданиям предыдущей статьи:

Так как Вы желаете стать настоящим разработчиком, мы рекомендуем Вам решать задачи самим, любым способом, который Вы сможете найти (желательно находить несколько способов) до того, как загляните в этот раздел. Настоящие профессионалы проверяют свои решения с использованием очень большого количества данных, чтобы узнать, как поведет себя программа при различных условиях, насколько быстро она будет работать, и будет ли она работать вообще. Поэтому очень важно не просто уметь решать задачи, но и находить самые простые и быстрые решения. И именно поэтому очень важно вообще находить несколько способов решений.

Условие задачи было следующим: "Есть 3 страницы A4, слаженные пополам. Они идут строго по порядку от 1 до 16 (включительно). Дана определенная страница, допустим, 13. Найти страницу, находящуюся на обратной стороне листа.

Например, если взять страницу 5, то на обратной стороне будет 12-ая страница. Если взять 7, будет 10-ая страница, 2 - 15-ая, 11 - 6-ая, 9 - 8-ая и т.д."

В задаче дополнительно была дана подсказка - известно количество страниц (16) и выбранная пользователем страница (13). Также известно, что нужно найти уравнение. Попробуем найти эту зависимость.

Для начала попробуем нарисовать небольшую таблицу:

1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9

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

Вроде и понятно, и ответы уже все есть, и решать-то уже нечего:) Но еще раз напомню, что нужно найти уравнение.

Самое простое уравнение: y=x, где x - то число, которое берем, а y - которое получаем. Если подставить вместо x число 13, то мы и получим число 13, а должны получить 4. Попробуем вычитание: y=x-16. Если из 13 вычесть 16, то получим отрицательное -3. Не совсем то число, но мы уже находится очень близко. Меняем местами параметры уравнения: y=16-x. Получается уже 3 (положительное), но по условию задачи, у нас страницы начинаются с первой, поэтому прибавим к этому уравнению еще 1. Конечное уравнение выглядит следующим образом:

y=16-x+1

Проверяем. Берем 13, получаем 4. Берем 10, получаем 7. Берем 5, получаем 12 и т.д. Уравнение работает четко. Мы нашли зависимость. Это очень здорово!

Но уравнение еще не доработано. По условию задачи нам дано количество страниц. Пусть за него отвечает переменная z:

y=z-x+1

Получилось какое-то сложное математическое выражение, а главное - никому не понятное (вспоминаем предыдущую статью). Подставляем понятные названия и получаем следующее:

result=count-dano+1

Уже лучше. Число 1 трогать не будем, т.к. практически все страницы (кроме специально вырванных), начинаются именно с этой цифры.

Теперь пишем конечный код на PHP:

<?php
$dano=13; // заданное пользователем число
$count=16; // количество страниц

$result=$count-$dano+1;
echo $result;
?>

Опубликовано: 2018-08-23 22:41:51