Php условия больше меньше

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

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

if (условие) условие выполнено, делаем так 
>
else
условие не выполнено, делаем иначе
>

Надеюсь логика условной операции понятна. Теперь давайте рассмотрим пример.

 $a = 5; 
$b = 25;

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

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

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

 $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

Теперь рассмотрим операторы на примерах:

$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. Однако, данная операция действительна только с присваиванием значений переменной. Теперь давайте рассмотрим готовый пример.

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

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

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

Источник

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

Операторы сравнения, как это видно из их названия, позволяют сравнивать между собой два значения. Возможно вам будет интересно также ознакомиться с разделом Сравнение типов, в котором приведено большое количество соответствующих примеров.

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

Пример Название Результат
$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 Меньше или равно TRUE если $a меньше или равно $b .
$a >= $b Больше или равно TRUE если $a больше или равно $b .

В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа. Эти правила также распространяются на оператор switch. Преобразование типов не происходит при использовании === или !== так как в этом случае кроме самих значений сравниваются еще и типы.

var_dump ( 0 == "a" ); // 0 == 0 -> true
var_dump ( "1" == "01" ); // 1 == 1 -> true
var_dump ( "10" == "1e1" ); // 10 == 10 -> true
var_dump ( 100 == "1e2" ); // 100 == 100 -> true

switch ( "a" ) case 0 :
echo "0" ;
break;
case "a" : // Эта ветка никогда не будет достигнута, так как "a" уже сопоставленно с 0
echo "a" ;
break;
>
?>

Для различных типов сравнение происходит в соответствии со следующей таблицей (по порядку).

Сравнение различных типов

Тип операнда 1 Тип операнда 2 Результат
null или string string NULL преобразуется в "", числовое или лексическое сравнение
bool или null что угодно Оба операнда преобразуются в bool , FALSE < TRUE
object object Встроенные классы могут определять свои собственные правила сравнения, объекты разных классов не сравниваются, объекты одного класса - сравниваются свойства тем же способом, что и в массивах (PHP 4), в PHP 5 есть свое собственное объяснение
string , resource или number string , resource или number Строки и ресурсы переводятся в числа, обычная математика
array array Массивы с меньшим числом элементов считаются меньше, если ключ из первого операнда не найден во втором операнде - массивы не могут сравниваться, иначе идет сравнение соответствующих значений (смотри пример ниже)
object что угодно object всегда больше
array что угодно array всегда больше

Пример #1 Сравнение булево/null

// Булево и null всегда сравниваются как булево значение
var_dump ( 1 == TRUE ); // TRUE - тоже что и (bool)1 == TRUE
var_dump ( 0 == FALSE ); // TRUE - тоже что и (bool)0 == FALSE
var_dump ( 100 < TRUE ); // FALSE - тоже что и (bool)100 < TRUE
var_dump (- 10 < FALSE ); // FALSE - тоже что и (bool)-10 < FALSE
var_dump ( min (- 100 , - 10 , NULL , 10 , 100 )); // NULL - (bool)NULL < (bool)-100 , тоже что и FALSE < TRUE
?>

Пример #2 Алгоритм сравнения обычных массивов

// Так сравниваются массивы при сравнении стандартными операторами
function standard_array_compare ( $op1 , $op2 )
if ( count ( $op1 ) < count ( $op2 )) return - 1 ; // $op1 < $op2
> elseif ( count ( $op1 ) > count ( $op2 )) return 1 ; // $op1 > $op2
>
foreach ( $op1 as $key => $val ) if (! array_key_exists ( $key , $op2 )) return null ; // не могут быть сравнимы
> elseif ( $val < $op2 [ $key ]) return - 1 ;
> elseif ( $val > $op2 [ $key ]) return 1 ;
>
>
return 0 ; // $op1 == $op2
>
?>

Сравнение чисел с плавающей точкой

Из-за особого внутреннего представления float , не нужно проверять на равенство два float -числа.

Для более подробной информации смотрите документацию по типу float .

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

Еще одним условным оператором является тернарный оператор "?:".

Пример #3 Присваивание значения по умолчанию

// Пример использования тернарного оператора
$action = (empty( $_POST [ 'action' ])) ? 'default' : $_POST [ 'action' ];

// Приведенный выше код аналогичен следующему блоку с использованием if/else
if (empty( $_POST [ 'action' ])) $action = 'default' ;
> else $action = $_POST [ 'action' ];
>

Выражение (expr1) ? (expr2) : (expr3) интерпретируется как expr2 , если expr1 имеет значение TRUE , или как expr3 если expr1 имеет значение FALSE .

Начиная с версии PHP 5.3 также стало возможным не писать среднюю часть тернарного оператора. Выражение expr1 ?: expr3 возвращает expr1 если expr1 имеет значение TRUE , и expr3 в другом случае.

Замечание: Пожалуйста учтите, что тернарный оператор является выражением и трактуется не как переменная, а как результат выражения. Это важно знать, если вы хотите вернуть переменную по ссылке. Выражение return $var == 42 ? $a : $b; не будет работать в функции, возвращающей значение по ссылке, а в более поздних версиях PHP также будет выдано предупреждение.

Замечание:

Рекомендуется избегать "нагромождения" тернарных выражений. Поведение PHP неочевидно при использовании нескольких тернарных операторов в одном выражении:

Пример #4 Неочевидное поведение тернарного оператора

// на первый взгляд, следующий код должен вывести 'true'
echo ( true ? 'true' : false ? 't' : 'f' );

// однако, он выводит 't'
// это происходит потому, что тернарные выражения вычисляются слева направо

// это намного более очевидная версия вышеприведенного кода
echo (( true ? 'true' : false ) ? 't' : 'f' );

// здесь вы можете видеть, что первое выражение вычисляется в 'true', которое
// в свою очередь вычисляется в (bool)true, таким образом возвращая истинную ветвь
// второго тернарного выражения.
?>

Источник

Читайте также:  Animation on hover html
Оцените статью