Оператори відносини та логічні оператори. Оператори порівняння у PHP

У цьому розділі описані оператори порівняння. Ці оператори перевіряють рівність (така як рівно, менше, тотожно і т.д.) між двома значеннями і повертають true або false в залежності від того, як співвідносяться операнди. Оператори порівняння завжди повертають логічні значення, і ці значення найчастіше застосовують у таких операторах як , while чи for управління ходом виконання програми.

Оператори порівняння
прикладНазваРезультат
$i == $yРівноTRUE якщо $i дорівнює $y після перетворення типів даних.
$i === $yІдентичноTRUE якщо $i дорівнює $y і має той самий тип даних.
$i != $yНе дорівнює
$i<>$yНе дорівнюєTRUE якщо $i не дорівнює $y після перетворення типів даних.
$i !== $yНе ідентичноTRUE якщо $i не дорівнює $y або вони різних типів.
$i< $y МеншеTRUE якщо $i строго менше $y.
$i > $yБільшеTRUE якщо $i строго більше за $y.
$i<= $y Менше або дорівнюєTRUE якщо $i менше або одно $y.
$i >= $yБільше або дорівнюєTRUE якщо $i більше або одно $y.

Примітка: якщо спробувати вивести результат порівняння на екран, значення trueвідображається у вікні браузера як 1. Значення false відповідає числу 0 і не відображається на екрані (у принципі це ви повинні пам'ятати з опису типу boolean). Якщо ви хочете побачити результат у вигляді true або false, використовуйте var_dump() .

Також варто зазначити: якщо порівнюється рядок з числом або два рядки, які містять числа, кожен рядок буде перетворено на число, і вони будуть порівнюватися як числа.

Оператор == (рівності)

Оператор == (рівності) приймає операнди будь-якого типу, якщо два операнда рівні, повертається значення true, інакше - false.

Якщо операнди мають різні типи даних, PHP спробує перетворити їх перед порівнянням одного типу, наприклад такий вираз "4" == 4 поверне значення true , оскільки PHP автоматично приведе порівнювані значення одного типу даних. Аналогічно, вираз $a == 1 поверне значення true , якщо змінна $a містить значення 1. Якщо потрібно уникнути неявного перетворення типів при порівнянні, слід використовувати оператор ідентичності, який буде розглянуто далі.

Оператор === (ідентичності)

Оператор === (ідентичності) приймає операнди будь-якого типу і повертає true, якщо їх значення збігаються (рівні), і false, якщо вони різні. Чим він відрізняється від оператора рівності? Оператор ідентичності перевіряє два операнди на «ідентичність», керуючись суворим визначенням збігу, це означає, що крім рівності самих значень операндів, вони також повинні належати до того самого типу даних. Як приклад розглянемо такий вираз, як 5 === "5" , результатом цього виразу буде значення false , тому що значення зліва є числом, а значення справа - рядком, тобто у цих значень різні типи даних. Запам'ятайте, що оператори == і === означають «рівно» та «ідентично/тотожно одно» .

Оператор! = або<>(Нерівності)

Оператор нерівностімає два види: != і<>. Він є протилежністю оператора == і повертає true у тому випадку, якщо значення операндів не рівні. Оператор нерівності повертає false тільки в тому випадку, якщо значення по обидва боки від нього дорівнюють один одному.

$ var2); // поверне false var_dump("Home"<>"home"); // поверне true?>

Оператор! = = (Неідентичність)

Оператор!== (Неідентичність) виконує перевірку, в точності протилежну оператору ===. Він повертає true якщо значення операндів не рівні один одному або не ставитися до одного і того ж типу даних. Як приклад розглянемо наступне вираз: 7 !== "7" , оператор «неідентичності» поверне true , тому що значення зліва є числом, а значення справа рядком, тобто вони відносяться до різним типамданих. Звідси легко запам'ятати, що оператори!= і!== означають «не одно» і «не ідентично/тотожно не одно».

Оператор > (більше)

При використанні оператора > (більше ) порівняння повертає true тільки в тому випадку, якщо значення зліва від оператора більше значення праворуч від нього. Як і інші оператори, оператор > працює не тільки з числовими значеннями, а й з рядковими. Але як один рядок може бути більшим за інший?

При роботі з рядками буква в нижньому регістрі більше літерив верхньому регістрі. При порівнянні рядків PHPспочатку перевіряє на розбіжність першу літеру рядка. Якщо різниці не виявляється, відбувається перехід до наступного символу і т.д., доки не буде знайдено різницю або буде досягнуто кінця рядка. Якщо два значення з кожної зі сторін оператора > дорівнюватимуть, оператор також поверне false .

3); // поверне true var_dump("Hi" > "hi"); // Поверне false var_dump(1 > 1); // поверне false?>

Оператор< (меньше)

Оператор< (меньше ) является функциональной противоположностью оператора «больше». Он возвращает true , когда значение слева от него менше значення, що знаходиться праворуч, і false якщо значення лівого операнда більше правого або значення рівні.

Оператор >= (більше чи одно)

Оператор >= ( більше або дорівнює) трохи відрізняється від тих операторів порівняння, які розглядалися раніше. Він додає можливість рівності двох значень з обох боків від нього, тобто, щоб було повернено true , значення зліва від оператора має бути більше або дорівнює значенню праворуч від нього. Оператор більше або одно повертає false , тільки якщо значення зліва від нього менше, ніж значення праворуч.

= 5); // поверне true var_dump("hi" >= "hi"); // Поверне true var_dump (1> = 2); // поверне false?>

Оператор<= (менше або дорівнює)

Оператор<= (меньше или равно) похож на оператор «больше или равно». Чтобы оператор <= вернул true , значение слева от оператора должно быть меньше или равно значению справа от него. Он возвращает false , только если значение слева от него больше, чем значение справа.

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

У С++ існує три логічні операції:

  1. Логічна операція І && нам вже відома;
  2. Логічна операція АБО || ;
  3. Логічна операція НЕ ! чи логічне заперечення.

Логічні операції утворюють складну (складову) умову з кількох простих (дві або більше) умов. Ці операції спрощують структуру програмного коду кілька разів. Так, можна обійтися і без них, але тоді кількість іфів збільшується у кілька разів, залежно від умови. У наступній таблиці коротко охарактеризовано всі логічні операції у мові програмування С++ для побудови логічних умов.

Зараз слід зрозуміти різницю між логічною операцією І та логічною операцією АБО, щоб надалі не плутатися. Настав час познайомитися з типом даних bool-логічний. Даний тип даних може приймати два значення: true (істина) та false (брехня). Перевірена умова операторів вибору має тип даних bool . Розглянемо принцип роботи наступної програми, і все буде зрозуміло з усіма цими логічними операціями.

// or_and_not.cpp: визначає точку входу для консольної програми. #include "stdafx.h" #include using namespace std; int main (int argc, char * argv) (bool a1 = true, a2 = false; // оголошення логічних змінних bool a3 = true, a4 = false; cout<< "Tablica istinnosti log operacii &&" << endl; cout << "true && false: " << (a1 && a2) << endl // логическое И << "false && true: " << (a2 && a1) << endl << "true && true: " << (a1 && a3) << endl << "false && false: " << (a2 && a4) << endl; cout << "Tablica istinnosti log operacii ||" << endl; cout << "true || false: " << (a1 || a2) << endl // логическое ИЛИ << "false || true: " << (a2 || a1) << endl << "true || true: " << (a1 || a3) << endl << "false || false: " << (a2 || a4) << endl; cout << "Tablica istinnosti log operacii !" << endl; cout << "!true: " << (! a1) << endl // логическое НЕ << "!false: "<< (! a2) << endl; system("pause"); return 0; }

Рядки 9 та 10вам повинні бути зрозумілі, тому що тут ініціалізуються змінні типи bool . Причому кожній змінній надається значення true або false. Починаючи з 9-го рядката закінчуючи 20-й, показано використання логічних операцій Результат роботи програми (див. рисунок 1).

Tablica istinnosti log operaci && true && false: 0 false && true: 0 true && true: 1 false && false: 0 Tablica istinnosti log operacii || true || false: 1 false || true: 1 true || true: 1 false || false: 0 Tablica istinnosti log operacii ! !true: 0 !false: 1 Щоб продовжити, натисніть будь-яку клавішу. . .

Рисунок 1 - Логічні операції С++

Напевно, у вас виникає питання, «А що це за нулики та одиночки?». Якщо є питання, то на нього потрібно відповісти. Відповідаю: «Нолик-це уявлення логічного значення false (брехня), ну а одиниці – це логічне true (істина)». Коротко поясню деякі моменти. Складова умова з використанням логічного Іістинно тільки в тому випадку, коли істинні обидва прості умови. У решті випадків складова умова хибна. Складова умова з використанням логічного АБО хибна тільки в тому випадку, коли помилкові обидва прості умови. У решті випадків складова умова істинна. Логічне заперечення НЕє унарною операцією, і вона не комбінує дві умови, на відміну від логічних операцій Іі АБО, які є бінарними операціями Логічне заперечення дозволяє перевернути зміст умови, що у деяких випадках дуже зручно. Умова з логічним запереченням істинна в тому випадку, якщо ця ж умова хибна без заперечення, і навпаки.


Головне на дію даного оператора - це умова. 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<= $b Меньше или равно True, если $a меньше или равно $b
Тепер розглянемо оператори на прикладах:

// Всупереч звичці = означає привласнення значення змінної, а == як одно
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 надається передане значення.
}
?>
Прочитайте коментарі до коду і все має бути зрозумілим.

Дякую за увагу!