Лекція № 4
Тема: Вирази та операції в РНР
План:
Поняття "вираз".
Операції в РНР.
Арифметичні операції.
Бітові операції.
Логічні операції.
Поняття «вираз» в PHP
Вирази є тією «цеглою», з якої складаються РHP-програми. Практично все, що ви пишете в програмі, є виразом. При цьому під виразом розуміється те, що має значення. Можна сказати і по-іншому: все, що має значення, є виразом. Найпростіший вираз — це константа, що стоїть в правій частині оператора привласнення:
$х = 100;
Розберемося, що є що. $х — це змінна = — це оператор привласнення, а 100 — це і є вираз. Його значення — 100.
Виразом може служити і змінна, якщо їй зіставлено безумовно значення. Наприклад:
$х = 4; Sy = $х;
У першому операторові виразом є константа 4. У другому — змінна $х, оскільки раніше їй було привласнено значення 4. Але це ще не все $у = $х теж є виразом! Адже не викликає сумніву те, що його значення 4. Це, у свою чергу, дозволяє використовувати наступних операторів: $у = $х = 5 або $у = ($х = 5).
Таким чином, в середині виразу можемо використовувати оператора привласнення:
$у = 1;
$х = 100* ($у = 2) * $у;
Очевидно, що змінній $х буде привласнено значення 400 (100*2 = 200 *8 2 - 400).
Операції в PHP
Арифметичні операції
Як і в будь-якій іншій мові, ми можемо використовувати арифметичні операції:
X + Y — складання;
X — Y — віднімання;
X * Y — множення;
X / Y — ділення;
X % Y — залишок від, ділення X на Y.
Також можливе використання дужок. Пріоритет одних арифметичних операцій над іншими і зміна пріоритетів при використанні дужок в арифметичних виразах відповідають звичайним математичним правилам.
До арифметичних операцій можна також віднести операції інкремента і декремента:
операція інкремента $х++ збільшує значення на 1;
операція декремента $х— зменшує значення на 1.
Бітові операції
Дані операції призначені для установки або зняття груп бітів цілочисельної змінної. Адже будь-яке число — це просто послідовність битий. Цілі числа в PHP — 32-розрядні, тому для представлення одного числа використовуються 32 бита:
0000 0000 0000 0000 0000 0000 0000 0000 - це нуль
0000 0000 0000 0000 0000 0000 0000 0001 - це 1
0000 0000 0000 0000 0000 0000 0000 0010 - це 2
0000 0000 0000 0000 0000 0000 0000 0011 - це 3
0000 0000 0000 0000 0000 0000 0000 0100 - це 4
0000 0000 0000 0000 0000 0000 0000 0101 - це 5
0000 0000 0000 0000 0000 0000 0000 1111 - це 15
Бітові операції:
x & у — будуть встановлені ті біти, які встановлені в x і уодночасно:x = 1111 (15) у = 1100 (12) Результат = 1100 (12) .
x | b — будуть встановлені тільки ті біти, які були встановлені або в x або в у:x = 0100 (4) у = 0101 (5) Результат = 0101 (5).
-х — інвертування бітів:x - 1001 Результат = 0110.
x << у — порозрядне зрушення бітів x вліво на у розрядів:x = 0010 у = 0001 (1 розряд) Результат = 0100.
x >> у — порозрядне зрушення бітів x управо на у розрядів:x = 0010 у = 0001 (1 розряд) Результат = 0001.
Логічні вирази
Логічні вирази — це вирази, результатом яких може бути або істина, або брехня. Приклади логічних виразів:
$х = true; // $х = істина
$х = $у < 0; // $х = true, якщо $у < 0
$х = $у == 0; // $х = true, якщо $у = 0
$х = $у>=0 &&$ у<=10 // $х = true, якщо $у < =0 і $у<=10, то
// є $у у діапазоні від 0 до 10.
У логічних виразах можна використовувати операторів порівняння і логічні операції. Оператори порівняння:
== — рівно;
!= — не рівно;
< — менше;
> — більше;
>= — більше або рівно;
<= — менше або рівно.
У PHP не можна порівнювати масиви і об'єкти, дозволяється порівнювати тільки скалярні змінні.
Логічні операції:
!x повертає true, якщо x — брехня, і навпаки (заперечення — NOT);
x && у повертає true, якщо x і у — істинні (логічна операція І — AND);
х || у повертає true, якщо істинне хоч би одне із значень або всі вони істинні (логічна операція АБО — OR).
Операції операторів інкремента (++) і декремента (—) не працюють з логічними змінними, тобто не є логічними операціями. Можна б було, звичайно, припустити, що якщо false — це 0, отже, інкремент false — це true, тобто 1.
<? $х = false; echo $х; $х++; echo $х; ?>
Проте приведений сценарій нічого не виведе (точніше він виведе два порожні рядки). Це означає, що операція інкремента для логічних значень не працює. Те ж саме можна сказати і про операцію декремента.
Скільки буде 2+2*2? Правильно, 6. Оскільки операція множення виконується перед операцією складання, отже, пріоритет операції множення вищий. Пріоритет арифметичних і логічних операцій представлений в табл.
Операції з вищим рівнем пріоритету виконуються в першу чергу. Якщо ви в чомусь сумніваєтеся, використовуйте дужки.
Пріоритет операцій в РНР
Таблиця 5.3

Пріоритет
Оператор
Порядок виконання

13
(постфікс)++ (постфікс)--
зліва направо

12
++(префікс) --(префікс)
справа наліво

11
* / %
зліва направо

10
+ -


9
« »


8
<<=>>=


7
== !=


6
&


5
«


4
I


3
&&


2
II


1
= += -= *= /= %= »= <<== &= ^= | =
справа наліво