Незважаючи на те що літерал і змінну можна вважати допустимими виразами, вони не виконують ніяких дій. Щоб отримати вираз, яке виконує будь-яку дію, потрібно використовувати оператори. Оператори об'єднують прості вирази в більш складні. Коли вирази й оператори об'єднуються в закінчену рядок програмного коду, яка виконує деяку дію, ви отримуєте інструкцію.
Зверніть увагу, що вираз і інструкція - це не те ж саме. Інструкції є зазначенням інтерпретатора вчинити будь-яку дію і завершуються крапкою з комою. Вирази всього лише визначають деяку сукупність обчислень. В одній інструкції може бути присутнім кілька виразів.
Оператор - це елемент програмного коду, який описує ту чи іншу дію в вираженні. У PHP оператор являє собою символ, завдяки якому можуть проводитися різні види обчислень, порівнянь або присвоювання за участю одного або декількох значень. Різні оператори відрізняються типом і кількістю операндів. У PHP використовується кілька типів операторів: арифметичні, привласнення, порівняння, логічні і порозрядні (побітові). Значення, розташовані по боках операторів, називаються операндами:
Числові літерали по обидві сторони від оператора + є його операндами. Операнд - це те, на що впливає оператор. Операнди і оператори дають в результаті вираз, яке формує нове значення.
З усього вищесказаного можна зробити висновок, що виразом називаються два або більше подвираженій, об'єднаних операторами. Чим більше у вас подвираженій і операторів, тим довше і складніше вираження.
При роботі з операторами особливе значення мають такі аспекти:
пріоритет (порядок виконання)
Різні оператори беруть різну кількість операндів. Оператори, які працюють з двома операндами називаються бінарними. до таких операторам відносяться додавання, віднімання множення і т.д.
Інші оператори можуть приймати лише один операнд, вони називаються унарними. Прикладами унарна оператора можуть служити унарний мінус (-), інкремент, декремент і т.д.
Існує також один оператор, який може працювати з трьома операндами, такий оператор називається тернарний. Цим оператором є оператор, який представляє собою скорочену форму запису умовного оператора if, про який ми поговоримо пізніше, коли будемо розглядати умовні оператори.
Створюючи вираження, необхідно звертати увагу на типи операндів, з якими працює кожен з операторів, тому що кожен оператор очікує отримати операнди конкретного типу даних. Наприклад, не можна виконати множення двох рядків
У цьому виразі інтерпретатор PHP автоматично перетворює рядки в числа і перемножує їх. Але іноді таке автоматичне перетворення неможливо, тому будьте уважні і стежте за використовуваними типами операндів.
Примітка: Коли PHP виконує автоматичне перетворення типу, це називається неявним приведенням типу, якщо перетворення типу виконується вручну - це називається явним приведенням типу.
Пріоритет оператора визначає порядок виконання операцій при обчисленні значення виразу.
Оператори з однаковим пріоритетом обробляються в порядку проходження в вираженні. Наприклад, операції множення і ділення виконуються в тому порядку, в якому йдуть в вираженні, тому що вони мають однаковий пріоритет.
Якщо вираз містить оператори з різним пріоритетом, то порядок їх виконання може впливати на кінцевий результат виразу. За допомогою круглих дужок (і) можна перевизначити порядок виконання операторів або просто поліпшити читаність вираження.
echo 3 * 2 + 5; // виведе 11
echo 3 * (2 + 5); // виведе 21
У другому вираженні множення буде виконуватися після складання, тому що порядок виконання операторів був перевизначений за допомогою круглих дужок.
Всі оператори обробляють свої операнди в певному напрямку. Напрямок обробки називається асоціативністю і залежить від типу оператора. Більшість операторів виконує обробку зліва направо - такий порядок називається лівої асоціативністю. Ліва асоціативність має на увазі, що вираз обчислюється зліва направо, права асоціативність - в зворотному напрямку.
У PHP є кілька рівнів пріоритетів, в таблиці наведено перелік операторів, відсортованих за рівнем пріоритету, від вищого до нижчого. Оператори на одному рівні мають однаковий пріоритет.
У колонці "Асоціативність" позначені оператори, які мають праву асоціативність, інші ставляться до лівої.