Навчання php оператори

Оператор - це опис деякої дії, що інтерпретатор повинен зробити з зазначеними змінними. Оператори входять в більшість виразів і дозволяють змінювати або порівнювати значення змінних. Змінні, з якими пов'язаний оператор, називаються операндами. У попередньому уроці ми вже використали 3 оператора: присвоєння "=", порівняння ">" і конкатенації (об'єднання) рядків ".";

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

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

Друга важлива властивість - асоціативність. Властивість визначає в якому напрямку обчислюються пременися, до яких застосовується оператор. Оператор може бути "асоціативним зліва", "асоціативним справа" або НЕ асоціативним. Ліва асоціативність означає що значення операндів обчислюються зліва направо, а права асоціативність - навпаки. Приклад "лівого" оператора - складання, приклад правого - привласнення.

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

У рядку "$ assoc = 3 * 3% 5;" використовується відразу 3 оператора: привласнення "=", множення "*" і розподіл по модулю "%". З таблиці видно, перший оператор в вираженні (вважається зліва-направо) - привласнення. Це "правий" і найменш пріоритетний оператор. значить в першу чергу треба обчислити правий операнд ( "3 * 3% 5"). Правий операнд - вираз з двома "ліві" операторами рівного пріоритету. Тому обчислення проводиться просто послідовно зліва направо. Результат обчислення правого операнда стає операндом оператора прісоенія. Результат виконання всіх операцій - змінна $ assoc отримує значення 4.

типи операторів

Всі оператори поділяються на 11 груп:

  • арифметичні
  • присвоєння
  • бітові
  • порівняння
  • контролю помилок
  • виконання
  • Інкремента / декремента
  • Логічні
  • строкові
  • Оператори масивів
  • Оператори типів

арифметичні оператори

Значення з протилежним знаком

Сума двох операндів

Різниця двох операндів

Добуток двох чисел

Приватне двох чисел

Розподіл по модулю

Залишок від цілочисельного ділення

У наступних уроках ми неодноразово використовуватиме оператор%, тому зупинюся на ньому докладніше. Результат ділення по модулю - це мінімальна різниця між вихідним значенням і значення, рівного делителю, помноженому на цілу частину звичайного приватного. Наприклад, 12% 5 = 2, тому що 12% 5 = 12 - (5 * [12/5]) = 12 - (5 * [2.4]) = 12 - (5 * 2) = 12 - 10 = 2.

На практиці розподіл $ a по модулю $ b вручну робиться так:
  1. Ділимо $ a на $ b, отримуємо $ c
  2. Якщо $ c дорівнює нулю, значить $ a% $ b = 0
  3. Якщо $ c не дорівнює нулю, відкидаємо від $ c дробову частину, отримуємо $ d
  4. Множимо $ b на $ d і отримане значення віднімаємо з $ a
  5. Результат віднімання - це і є результат ділення $ a по модулю $ b

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

Оператор присвоєння "=" ми вже пояснювали і використовували дещо раніше. Але крім звичайного присвоєння в PHP є ще кілька розширених операторів присвоєння. Розширений оператор складається з оператора присвоєння і стоїть перед ним модифицирующего оператора. Наприклад, в операторі "+ =" модифицирующим оператором будемо "+" підсумовування.

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

бітові оператори

Бітові операції призначені для зміни значень окремих бітів змінних. Ці оператори працюють за тими ж принципами, що і звичайні логічні оператори, тільки результат - значення біта (0 чи 1), а не TRUE або FALSE.

TRUE якщо $ a більше або дорівнює $ b

При використанні операцій порівняння слід пам'ятати, що PHP неявно робить перетворення типів. Наприклад, якщо порівнюється числове значення з рядком, то рядок конвертується в число, а якщо порівнюються два рядки, що складаються тільки з цифр - вони обидві конвертуються в числа і порівнюються в числовому вигляді.

Ще один оператор порівняння - тернарний оператор ".". Сенс його в тому, що повертається одне зі значень в залежності від умови. У загальному вигляді тернарний оператор записується так:

[Lvalue] = (умова)? вираз, якщо умова істинна. вираз, якщо умова помилкова;

Якщо $ b більше 100 - виведеться "Більше сотні", а якщо менше - 'Менше або дорівнює 100';

Оператори контролю помилок

При виконанні скрипта всі помилки, попередження і зауваження виводяться на екран. Відключити цю опцію можна, змінивши INI-файл PHP, або викликавши спеціальну функцію. Але ці зміни торкнуться відразу всі скрипти на сервері. Для відключення виведення помилок в одному вираженні використовується оператор контролю помилок "@" (собака).

У наступному прикладі, якщо файл 'counter.dat' відсутня, то виконання першого рядка призведе до висновку попередження, а друга - ні.

Оператор придушення помилок дуже корисний при виклику функцій, які можуть видати помилку незалежно від старань програміста. Приклад такої функції - imagecreatefromjpeg (). Це функція відкриває файли формату jpeg, але якщо файли приходять від користувачів, то можуть бути і "битими", а на таких файлах imagecreatefromjpeg () видає помилку.

оператор виконання

Оператор виконання "` `" (зворотні лапки) дозволяє виконувати команди операційної системи і отримувати результат їх виконання. Однак у більшості провайдерів цей оператор відключений і його використання не дасть ніякого результату - повертаються дані будуть завжди порожні.

При запуску на ОС Windows цей скрипт виведе результати роботи утиліти ipconfig. Однак якщо PHP працює в безпечному режимі - скрипт не виведе нічого.

Оператори інкремента і декремента

Оператори інкремента "++" і декремента "-" застосовуються для зміни значення змінної на "1".

TRUE, коли операнд FALSE

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

Скрипт завжди буде виводити 'друге значення' при будь-якому значенні $ b, тому що вираз "$ b = 200" завжди істинно. Це дуже поширена помилка, яку досить складно відловити і виправити. Тому при написанні коду треба бути уважним і акуратним.

строкові оператори

Єдиний строковий оператор - оператор конкатенації "." (крапка). Ми вже стикалися з цим оператором раніше. Тут лише додатково відзначимо, що оператор "." досить інтелектуальний і сам коректно виробляє більшість привидів типів. Це дуже зручно, тому що можна запросто одним виразом "склеїти" кілька змінних різного типу.

Оператори масивів

$ A + $ b або $ a and $ b

Об'єднання двох масивів

$ A == $ b або $ a or $ b

TRUE, якщо масиви мають однаковий набір пар "ключ / значення"

TRUE, якщо масиви мають однаковий набір пар "ключ / значення", в однаковому порядку і однаковий типу

TRUE, якщо масиви мають різний набір пар "ключ / значення"

TRUE, якщо масиви мають різний набір пар "ключ / значення", в однаковому порядку і однаковий типу

Оператор об'єднання "+" додає елементи правого операнда до списку елементів лівого операнда. При цьому збігаються пари "ключ / значення» не перезаписувати, а пропускаються.

Детально ми розглянемо оператори роботи з масивами в соответствущего чолі.

Оператор перевірки типу

Єдиний оператор перевірки типу "instanceof" дозволяє перевірити, чи є дана змінна екземпляром того чи іншого класу.

При розгляді класів ми розглянемо цю інструкцію більш докладно.

Схожі статті