Php отрицание. Условные операторы

На уроке будут рассмотрены условные операторы php: оператор if и оператор переключения switch

Условные операторы php представлены тремя основными конструкциями:

  • оператор условия if ,
  • оператор переключения switch
  • и тернарный оператор .

Рассмотрим подробнее каждый из них.

PHP оператор if

Рис 3.1. Условный оператор IF, укороченный вариант


Рис. 3.2. Синтаксис условного оператора IF ELSE


Рис. 3.3. Полный синтаксис условного оператора IF elseif

Подытожим:

Полный синтаксис:

if (условие) { // если условие истинно operator1; operator2; } elseif(условие) { operator1; ... } else { // если условие ложно operator1; operator2; }

  • Укороченный синтаксис может не содержать части конструкции с else и не содержать дополнительного условия elseif
  • Вместо служебного слова elseif можно писать else if (отдельно)
  • В одной конструкции if может быть несколько elseif . Будет выполнено первое встретившееся выражение elseif равное TRUE .
  • В случае наличия альтернативного условия elseif конструкция else должна идти последней в синтаксисе.

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

Рис. 3.4. Условный оператор If и Endif в php

Пример:

if($x > $y): echo $x." больше, чем ".$y; elseif($x == $y): // при использовании ":" нельзя писать раздельно else if echo $x." равно ".$y; else: echo $x." не > и не = ".$y; endif;

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

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

В условии if в скобках могут присутствовать следующие операции:

Пример: проверить значение числовой переменной: если оно меньше либо равно 10, — выдавать сообщение «число меньше или равно 10» , в обратном случае выдавать сообщение «число больше 10»


Решение:

$number=15; if ($number <=10) { echo "число меньше или равно 10"; } else { echo "число больше 10"; }

Блоки php кода можно разрывать, рассмотрим пример:

Пример: Выводить на экран html-код «а равно 4» , если переменная $a действительно равна 4


1 Решение:
1 2 3 4

2 Решение:

1 2 3 A равно 4

A равно 4

Задание php 3_1: Выводить перевод цветов с английского языка на русский, проверяя значение переменной (в которой присвоен цвет: $a="blue")


Задание php 3_2: Найти максимальное из трех чисел

Операции сравнения и правило лжи

В конструкции if в скобках должно находиться логическое выражение или переменная, которые рассматриваются с точки зрения алгебры логики, возвращающая значения либо true либо false

Т.е. в качестве условия может выступать единственная переменная. Рассмотрим пример:

1 2 3 4 $a = 1 ; if ($a ) { echo $a ; }

$a=1; if ($a) { echo $a; }

В примере транслятор языка php будет рассматривать переменную в скобках на правило лжи:

Правило ЛЖИ или что считается ложным:

  • логическое False
  • целый ноль (0 )
  • действительный ноль (0.0 )
  • пустая строка и строка «0»
  • массив без элементов
  • объект без переменных
  • специальный тип NULL

Таким образом, в рассмотренном примере переменная $a равна единице, соответственно условие будет истинным и оператор echo $a; выведет на экран значение переменной.

Задание php 3_3: дана переменная а со строковым значением. Если а равна имени, то выводить «Привет, имя!» , если а равна пустому значению, то выводить «Привет, незнакомец!»

Логические конструкции И ИЛИ и НЕ в условном операторе

  1. Иногда необходимо предусмотреть выполнение одновременно нескольких условий. Тогда условия соединяются логическим оператором И — && :
  2. $a=1; if ($a>0 || $a>1) { echo "a > 0 или a > 1"; }

  3. Для указания ложности условия используется логический оператор НЕ — ! :
  4. 1 2 3 4 $a = 1 ; if (! ($a < 0 ) ) { echo "a не < 0" ; }

    $a=1; if (!($a<0)) { echo "a не < 0"; }

Оператор Switch PHP

Оператор switch или «переключатель» заменяет несколько подряд идущих конструкций if . При этом он сравнивает одну переменную с множеством значений. Таким образом, это наиболее удобное средство для организации мультиветвления .

Синтаксис:

1 2 3 4 5 6 7 8 9 10 switch ($переменная ) { case "значение1" : оператор1 ; break ; case "значение2" : оператор2 ; break ; case "значение3" : оператор3 ; break ; [ default : оператор4 ; break ; ] }

switch($переменная){ case "значение1": оператор1; break; case "значение2": оператор2; break; case "значение3": оператор3; break; }

  • Оператор может проверять как строковые значения (тогда они указываются в кавычках), так и числовые (без кавычек).
  • Оператор break в конструкции обязателен. Он осуществляет выход из конструкции при истинном условии и выполнении соответствующего условию оператора. Без break будут выполняться операторы всех case независимо от их истинности.

Рис. 3.5. Условный оператор Switch


Пример: задан массив с полными мужскими именами. Проверять первый элемент массива и в зависимости от имени, выдавать приветствие с коротким именем.


Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $names = array ("Иван" , "Петр" , "Семен" ) ; switch ($names [ 0 ] ) { case "Петр" : echo "Привет, Петя!" ; break ; case "Иван" : echo "Привет, Ваня!" ; break ; case "Семен" : echo "Привет, Ваня!" ; break ; default : echo "Привет, $names !" ; break ; }

$names=array("Иван","Петр","Семен"); switch($names){ case "Петр": echo "Привет, Петя!"; break; case "Иван": echo "Привет, Ваня!"; break; case "Семен": echo "Привет, Ваня!"; break; default: echo "Привет, $names!"; break; }

Задание php 3_4:

  • Создайте переменную $day и присвойте ей произвольное числовое значение
  • С помощью конструкции switch выведите фразу «Это рабочий день» , если значение переменной $day попадает в диапазон чисел от 1 до 5 (включительно)
  • Выведите фразу «Это выходной день» , если значение переменной $day равно числам 6 или 7
  • Выведите фразу «Неизвестный день» , если значение переменной $day не попадает в диапазон чисел от 1 до 7(включительно)

Дополните код:

1 2 3 4 5 6 7 8 9 10 11 12 ... switch (... ) { case 1 : case 2 : ... echo "Это рабочий день" ; break ; case 6 : ... default : ... }

Switch(...){ case 1: case 2: ... echo "Это рабочий день"; break; case 6: ... default: ... }

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

Тернарный оператор , т.е. с тремя операндами, имеет достаточно простой синтаксис, в котором слева от знака? записывается условие, а справа — два оператора разделенные знаком: , слева от знака выполняется оператор при истинности условия, а справа от знака: выполняется оператор при ложном условии.

условие? оператор1 : оператор2 ;

Здравствуйте уважаемые начинающие программисты. Продолжим изучение элементов, из которых состоит .

В этой статье мы узнаем, что такое операторы php. Вообще-то, с некоторыми из них мы знакомы чуть ли не с детства, только знаем их как знаки (+, -, =, !, ?).

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

Можно даже сказать, что все печатные знаки не являющиеся буквой или цифрой, в php являются операторами. Но и это ещё не всё, так как есть операторы состоящие из букв.

Давайте начнём по порядку.

Арифметические операторы

Арифметические операторы применяются для выполнения действий с числами.

+ — оператор сложения;
— — оператор вычитания;
/ — оператор деления;
* — оператор умножения;
% — оператор получения остатка при делении;
++ — оператор увеличения на единицу (инкремент);
— — — оператор уменьшения на единицу (декремент)

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

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

echo (6 + 7 ) * (7 + 8 ); // 195
?>

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

echo 8 / 3 ; //2.66666666666
?>

Количество знаков, выводимых для дробного числа, зависит от установленного значения в директиве precision , находящейся в файле php.ini. Обычно это 12 символов не считая точки.

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

echo 53328 % 4 ; //0
?>

Действия с арифметическими операторами, за исключением инкремента и декремента, называются бинарными , так как в них участвуют два операнда (слагаемое + слагаемое, делимое / делитель, и т. п.)

Действия инкремента и декремента называются унарными , так как в них участвует один операнд. Есть ещё условная операция , в которой участвуют три операнда.

Операторы инкремента (++) и декремента (- -) применяются только к переменным.

Тип переменной integer (целые числа)

$next = 3 ;
echo ++$next; // 4
?>

Тип переменной string (строка)

$next = "abc";
echo $next; // abd
?>

Буква «d» выводится вместо буквы «с» потому, что она следующая по алфавиту, а мы увеличили значение переменной на единицу.

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

Поразрядные операторы

Поразрядные операторы предназначены для работы с двоичными данными. Если кто-то не представляет что это такое — объясню. Двоичные числа — это числа типа 1001000011100000111000.

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

& — поразрядное соединение И (and);
~ — поразрядное отрицание (not);
| — поразрядное объединение ИЛИ (or);
^ — поразрядное исключение ИЛИ (xor);
<< — сдвиг влево битового значения операнда;
>> — сдвиг вправо битового значения операнда;

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

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

Операторы сравнения относятся к логическим операторам, и применяются для сравнения переменных. Массивы и объекты с их помощью сравнивать нельзя.

> — оператор больше;
=> — оператор больше или равно;
< — оператор меньше;
<= — оператор меньше или равно;
== — оператор равенство;
!= — оператор неравенство;
=== — оператор эквивалентности (равны значение и тип переменной);
!== — оператор неэквивалентности;

В результате сравнения на экран выводится либо единица, что соответствует true (истина), либо пустая строка, что соответствует false (ложь).

echo 1 > 0 ; // 1
echo 1 < 0 ; // пустая строка
echo 1 => 0 ; // 1
echo 1 == 1 ; // 1
?>

Вот так, сами по себе, операторы сравнения почти не применяются. Основное их предназначение — это работа в паре с оператором if .

Условные операторы if, else, elseif .

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

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



if ($next < $nexT)
{
echo "Возможны осадки"; // Выводиться Возможны осадки
}
?>

$next = "Влажность воздуха 80%";
$nexT = "Влажность воздуха 90%";
if ($next > $nexT)
{
echo "Возможны осадки"; // Выводиться пустая строка
}
?>

Если в программе нужно задать два действия, одно из которых будет выполняться при истинном значении, а другое при ложном, то вместе с оператором if , применяется оператор else

$next = "Влажность воздуха 80%";
$nexT = "Влажность воздуха 90%";
if ($next > $nexT)
{
echo "Возможны осадки";
}
else
{
echo "Осадки не предвидятся";
}
?>

В этом случае выведется «Осадки не предвидятся», а если в выражении сменить знак «Больше» на «Меньше», то выведется «Возможны осадки». Вот так условные операторы проверяют условие, и выводят согласно ему верный результат.

Очень часто возникает необходимость задать более двух условий, и тогда, для их последовательной проверки, применяется оператор elseif .



if ($next > $nexT)
{
echo "Ясно";
}
elseif ($next <= $nexT)
{
echo "Снег";
}
elseif ($next >= $nexT)
{
echo "Дождь";
}
elseif ($next == $nexT)
{
echo "Засуха";
}
else
{
echo "Возможны осадки";
}
?>

Эта программа выведет «Снег». Если бы ни одно из условий не подошло, то вывелось бы «Возможны осадки».

Оператор if может содержать сколько угодно блоков elseif , и только один оператор else .

Допускается альтернативный вариант записи — без фигурных скобок. В таком случае строки операторов if, else, elseif , заканчиваются двоеточием, а вся конструкция — ключевым словом (оператором) endif .

$next = "Влажность воздуха 50%";
$nexT = "Влажность воздуха 60%";
if ($next <= $nexT):

echo "Снег";

elseif ($next >= $nexT):

echo "Дождь";

elseif ($next == $nexT):

echo "Засуха";

else:

echo "Возможны осадки";
endif ;
?>

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

Логические операторы похожи на поразрядные операторы. Разница между ними в том, что первые оперируют логическими переменными, а вторые цифрами.

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

&& — соединительный союз И;
and — тоже И, но с меньшим приоритетом;
|| — разделительный союз ИЛИ;
or — тоже ИЛИ, но с меньшим приоритетом;
xor — исключающее один элемент ИЛИ;
! — отрицание;

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

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

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

Оператор присваивания = присваивает левому операнду значение правого.

$next = "Здравствуйте"
echo "Здравствуйте" // Здравствуйте
?>

Оператор точка

Оператор точка отделяет целую часть числа от дробной, и объединяет несколько строк и число, в одну целую строку.

$next = 22 ;
echo "Сегодня после" .$next. "ожидается заморозок"; // Сегодня после 22 ожидается заморозок
?>

Оператор круглые скобки

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

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

Оператор фигурные скобки

В php существует три способа, или даже стиля, размещения фигурных скобок.

1. BSD стиль — скобки выравниваются по левому краю.

if ($next)
{

}

2. GNU стиль — скобки выравниваются с отступом от левого края

if ($next)
{
echo «Здравствуйте уважаемые начинающие программисты»;
}

3. K&R стиль — скобка открывается в строке оператора

if ($next){
echo «Здравствуйте уважаемые начинающие программисты»;
}

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

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

Достаточно иметь представления об основных базовых. А остальные будем разбирать на практических примерах.

По аэропорту Шереметьево в слезах бродит ирландец. Один из служащих решил посочувствовать:
— По родине скучаете?
— Вовсе нет. Только что я потерял весь свой багаж
— Как же это могло случиться?
— Сам не пойму. Вроде как следует пробку затыкал

PHP поддерживает стандартные логические операторы AND и && , OR и || , ! (не) и XOR . Логические операторы позволяют сравнивать результаты работы двух операндов (значения или выражения) с целью определения факта возвращения одним из них или обоими значения true или false и выбора соответствующего продолжения выполнения сценария в зависимости от возвращенного значения. Как и операторы сравнения, логические операторы возвращают одно логическое значение - true либо false , в зависимости от значений находящихся по обе стороны от оператора.

Логическое ИЛИ (OR и ||)

Оператор логическое ИЛИ обозначается как OR или || . Он выполняет операцию «логическое ИЛИ» над двумя операндами. Если один или оба операнда имеют истинное значение, он возвращает true . Если оба операнда имеют ложные значения, он возвращает false . У вас вероятно возник вопрос, зачем же сделали два варианта одного оператора? Смысл двух разных вариантов оператора «логическое ИЛИ» в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор || . И так, если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернет false .

Оператор OR работает также как и оператор || за одним исключением, если оператор OR используется с присваиванием, то сначала он вычислит и вернет значение левого операнда, в остальном он работает точно также как и оператор || , т.е. если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернёт false .

Чтобы стало понятнее, как они работают, приведем следующий пример:

1 // Сначала переменной присваивается значение false, а затем вычисляется второй операнд // Действие приоритета: ($var2 = false) or true $var2 = false or true; echo $var2; // false не выводится // ($var3 = 0) or 3 $var3 = 0 or 3; echo "
$var3"; // => 0 ?>

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

Стоит упомянуть еще об одном важном моменте, касательно обоих операторов OR и || . Оператор «логическое ИЛИ» начинает свои вычисления со своего левого операнда, если он возвращает true , то правый операнд вычисляться не будет. Это позволяет экономить время исполнения, но нужно внимательно следить за тем, чтобы код, от которого может зависеть корректная работа программы, не был помещен в правый операнд.

Логическое И (AND и &&)

Оператор логическое И обозначается как AND или && . Он выполняет операцию «логическое И» над двумя операндами. Он возвращает true тогда и только тогда, когда оба операнда имеют значение true . Если один или оба операнда возвращают значение false , оператор возвращает false . Смысл двух разных вариантов записи оператора «логическое И» такой же как и у двух предыдущих операторов, а именно в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор && . И так, если оба его операнда имеют истинное значение, он возвращает true . Если хотя бы один или оба его операнда возвращают значение false , он тоже вернет false .

Оператор AND работает также как и оператор && за одним исключением, если оператор AND используется с присваиванием, то сначала он вычислит и вернёт значение левого операнда, в остальном он работает точно также как и оператор && . Если хотя бы один из его операндов возвращает значение false , он тоже вернет false , также если оба операнда возвращают ложные значения, он возвращает false .

Для понимания рассмотрим теперь, как это работает на практике:

$bar3"; // => 9 ?>

Исключающее ИЛИ (XOR)

Оператор исключающее ИЛИ обозначается как XOR . Он возвращает значение true , если один и только один из операндов имеет значение true . Если оба операнда имеют значение true , оператор вернет значение false .

Так как приоритет оператора XOR такой же как и у операторов AND и OR (ниже чем у оператора присваивания), и он используется в выражении с присваиванием, то сначала он вычисляет и возвращает значение левого операнда.

6 $a1 = 19 xor 5 > 6; var_dump($a1); // => 19 var_dump(true xor true); // false var_dump((2 < 3) xor (5 != 5)); // true ?>

Логическое НЕ (!)

Оператор логическое НЕ , его также называют отрицание обозначается знаком! . Он является унарным оператором, помещаемым перед одиночным операндом. Оператор «логическое НЕ» используется для инверсии логического значения своего операнда и всегда возвращает true или false .

Если потребуется инвертировать значение выражения, например a && b , необходимо будет использовать круглые скобки: !(a && b) . Также с помощью оператора! можно преобразовать любое значение x в его логический эквивалент, дважды применив оператор: !!x .