Coding:
Вирази та оператори
Оператор – це найменша частина програми, що виконується як одне ціле. У попередньому уроці ми розглянули приклад оператора присвоювання “=” та виклик функції echo, який теж є оператором. Синтаксис PHP вимагає, щоб оператори відокремлювалися один від одного крапкою з комою, що ми також могли спостерігати в усіх попередніх прикладах.
Інколи виникає необхідність виконувати кілька операторів як одне ціле, і тоді застосовують так звані операторні дужки { } – все, що знаходиться між ними, виконується як один оператор та називається складним оператором. Трохи докладніше складні оператори буде розглянуто у наступному уроці.
Виразом називається деякий запис, що може бути підраховано, тобто що приймає деяке значення. Приклад:
<?
$a = 5;
$b = $a + 10;
$c = $a * $b + 15; ?> Тут ми бачимо три оператори присвоювання, відокремлені один від одного крапкою с комою. Кожен з цих операторів присвоює змінній зліва від знаку “=” значення виразу справа від знаку “=”, тобто 5, $a+10, $a*$b+15 відповідно.
У виразах використовуються знаки операцій – математичних, логічних, текстових та iн. Я наведу таблички операцій, що можуть бути використані у виразах.
Прості арифметичні операції:
| Приклад | Назва | Значення |
|---|---|---|
| $a + $b | Додавання | Сума $a і $b |
| $a - $b | Віднімання | Різниця $a і $b |
| $a * $b | Множення | Результат від множення $a на $b |
| $a / $b | Ділення | Результат від ділення $a на $b (float) |
| $a % $b | Залишок | Залишок від ділення $a на $b (int) |
Логічні операції:
| Приклад | Назва | Значення |
|---|---|---|
| $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 |
| $a >= $b | Більше або дорівнює | true, якщо $a більше або дорівнює $b |
| $a && $b | І | true, якщо і $a=true, і $b=true |
| $a and $b | І | true, якщо і $a=true, і $b=true |
| $a || $b | АБО | true, якщо або $a=true, або $b=true |
| $a or $b | АБО | true, якщо або $a=true, або $b=true |
| $a xor $b | АБО-НЕ | true, якщо або $a=true, або $b=true, але не обидва разом |
| !$a | НЕ | true, якщо $a!=true |
Логічні операції використовуються у умовних конструкціях, що ми докладніше розглянемо у наступному уроці. Слід бути особливо обережним, щоб не плутати оператор присвоювання “=” з операцією еквівалентності “==”. Справа у тому, що оператор присвоювання сам може розглядатися як вираз, наприклад така конструкція
<?
$b = ($a = 5) + 10;
echo $b; ?> надрукує число 15, оскільки тут сам оператор присвоювання має значення виразу, який присвоюється, тобто у данному випадку змінній $a присвоюється значення 5, вираз ($a = 5) теж має значення 5.
Так само працюють і оператори присвоювання з операцією: +=, -=, *=, /=, наприклад:
<?
$a = 1;
$a += 5; // $a == 6 $a -= 2; // $a == 4
$a *= 3; // $a == 12
$a /= 6; // $a == 2
?> Новий приклад – знак // означає коментар. Все, що стоїть у рядку програми після цього знаку, ігнорується і не виконується. Це дозволяе коментувати текст програми для більш детального його розуміння. У даному випадку я коментую, чому дорівнює значення змінної $a на кожному рядку програми. Операція += означає присвоювання з додаванням, тобто $a += 5 означає, що до попереднього значення змінної $a додається ще 5. -= відповідно – присвоєння з відніманням, *= - з множенням, /= - з діленням.
Так само треба пояснити різницю між операцією “дорівнює” (==) та “ідентично” (===). PHP має дещо демократичну політику щодо типів змінних, тобто тип змінної визначається на етапі присвоювання їй значення, за контекстом. Наприклад, у такому випадку:
<?
$a = 5;
$b = "5"; ?> змінні будуть різного типу, $a – типу int, а $b – типу string. Проте в цьому випадку умова $a==$b буде істинною (бо насправді ці змінні містять одне й те саме), але умова $a===$b не буде істинною, оскільки ці змінні мають різний тип, а отже не зовсім ідентичні.
Існують так звані унарні операціі віднімання та додавання, що зменшують або збільшують значення змінної на одиницю:
<?
$a = 1;
$a++; // значення a збільшилось на одиницю echo "a=$a,"; // надрукує "a=2"
$a--; // значення a зменшилось на одиницю
echo "a=$a"; // надрукує "a=1"
?> Якщо використовувати унарні операції у виразах, то слід знати, що ці операції мають два види запису – префіксний (++ чи – пишуться перед іменем змінної) та постфіксний (після імені). Різниця полягає у тому, що у префіксному варіанті значення виразу є збільшене чи зменшене значення змінної, а в другому – ні. Як приклад:
<?
$a = 1;
$b = $a++; // $a = 2, $b = 1
$b = ++$a; // $a = 3, $b = 3 $b = --$a; // $a = 2, $b = 2
$b = $a--; // $a = 1, $b = 2
?> І останнє, про що потрібно знати у цьому уроці – це приорітети операцій. Якщо вираз складається з великої кількості операцій, то вони підраховуються у строго визначеному порядку. Ще з курсу арифметики середньої школи відомо про вищий приорітет операцій множення та ділення перед операціями додавання та віднімання, тобто вираз
$a*$b + $c*$dпідраховується саме як “помножити $a на $b, помножити $c на $d і скласти результати”, і ніяк інакше. Якщо ж треба спочатку виконати додавання, то потрібно використовувати дужки:
$a*($b + $c)*$dНаведемо тут повну таблицю приорітетів операцій. Багато з цих операцій ще не були описані тут, проте така таблиця має довідниковий характер та може бути використана пізніше при виникненні будь-яких питань щодо приорітетів операцій. “Порядок” означає відносно якого знака операції визначається приорітет – справа чи зліва від поточного.
| Порядок | Операції |
|---|---|
| зліва | , |
| зліва | or |
| зліва | xor |
| зліва | and |
| справа | |
| зліва | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |
| зліва | ? : |
| зліва | || |
| зліва | && |
| зліва | | |
| зліва | ^ |
| зліва | & |
| не має значення | == != === !== |
| зліва | < <= > >= |
| зліва | << >> |
| зліва | + - . |
| зліва | * / % |
| справа | ! ~ ++ -- (int) (double) (string) (array) (object) @ |
| справа | [ |
| не має значення | new |
Цикли for(), foreach()
Змінні та константи
Основи PHP
Продвинутий SQL-менеджер
Фахівець широкого профілю
Коментарі (11) | Залишити коментар
| Lilly | 17.04.2011 06:25 |
| Wow! That′s a relaly neat answer! |
| Sundance | 17.04.2011 21:54 |
| I′m out of league here. Too much brain power on dsiaply! |
| oem software | 10.02.2012 22:12 |
| rQF6Bf I am amazed with the abundance of interesting articles on your site! The author - good luck and wish you the new interesting posts..!! |
| Microsoft OEM Software | 07.03.2012 14:42 |
| CCfYOx Looking forward to reading more. Great blog.Thanks Again. Really Cool. |
| Adobe OEM Software | 08.03.2012 05:36 |
| hDZO7N I am so grateful for your blog article.Really thank you! Really Cool. |
| Adobe OEM Software | 08.03.2012 21:25 |
| igs8wc I really liked your blog. Really Great. |
| Microsoft OEM Software | 08.03.2012 21:25 |
| U5BC7z I appreciate you sharing this article post.Much thanks again. Awesome. |
| Discount OEM Software | 08.03.2012 22:23 |
| xIlhzz Hey, thanks for the blog article.Really thank you! Awesome. |
| Microsoft OEM Software | 08.03.2012 22:24 |
| 7P0pjP A round of applause for your article post.Much thanks again. Want more. |
| Microsoft OEM Software | 08.03.2012 22:24 |
| NeRoEa This is one awesome article.Really thank you! Great. |
| wholesale men clothing | 20.03.2012 23:27 |
| Really informative article.Much thanks again. Great. |


