Вирази
Вирази - це найважливіші будівельні елементи PHP. Майже все, що розробник пише в PHP, – вираз. Найпростіше і найточніше визначення виразу — «все, що має значення».
Основні форми виразів - це константи та змінні. Якщо записати $a = 5
, значение5
будет присвоено переменной $a. У значения5
, очевидно, — значение 5 или, говоря по-другому,5
— це вираз зі значенням 5 (у даному випадку 5
— це ціла константа).
Після цього присвоєння очікується, що значення змінної $a також дорівнює 5, тому якщо написано $b = $a
, очікується, що працювати це буде так само, як коли б було написано $b = 5
. Інакше кажучи, змінна $a - це також вираз зі значенням 5. Якщо все працює правильно, то так і відбудеться.
Трохи складніші приклади виразів — це функції. Наприклад, розглянемо наступну функцію:
Loading...
Спираючись на те, що розробник знайомий принципом роботи функцій (якщо ні, рекомендовано прочитати розділ про функції), він може припустити, що надрукувати $c = foo()
— за змістом те саме, що написати $c = 5
, і матиме рацію. Функції - це вирази, значення яких те, що повертає функція. Оскільки функція foo()
повертає 5, значенням виразу «foo()
» буде 5. Зазвичай функції не просто повертають статичне значення, а щось обчислюють.
Звичайно, значення в PHP не повинні бути цілими, і часто це не так. Мова PHP підтримує чотири типи скалярних значень: цілочисленні значення (int), значення з плаваючою точкою (float), рядкові (string) та логічні (bool) значення (скалярні значення це ті, які не можна «розбити» на менші частини, на відміну, наприклад, від масивів). PHP підтримує також два складні (складові, композитні — нескалярні) типи: масиви та об'єкти. Кожне з цих типів значень дозволяється надавати змінної або повертати функцією.
Однак PHP використовує вирази значно ширше, так само, як це роблять інші мови. PHP - це мова з орієнтацією на вирази, який майже все в коді розглядає як вираз. Повернемося до того прикладу, з яким ми вже мали справу: $a = 5
. Легко помітити, що є два значення — значення цілісної константи 5
і значення змінної $a, що також приймає значення 5. Але, хоча це не очевидно, тут є ще одне значення — значення самого присвоєння. Саме присвоєння обчислюється в присвоєне значення, в даному випадку - 5. Тобто вираз $a = 5
, незалежно від того, що воно робить, це вираз зі значенням 5. Тому запис $b = ($a = 5)
равносильна записи$a = 5; $b = 5;
(Точка з комою означає кінець виразу). Оскільки операції присвоєння аналізуються праворуч наліво, також можна написати $b = $a = 5
Інший гарний приклад орієнтованості на вирази — префіксний і постфіксний інкремент і декремент. Користувачі PHP та інших мов можливо вже знайомі з формою запису variable++
иvariable--
. Це оператори інкременту та декременту. Як і мова Сі, мова PHP підтримує два типи інкременту - префіксний і постфіксний. Вони обидва інкрементують значення змінної та ефект їхньої дії на неї однаковий. Різниця полягає у значенні вираження інкременту. Префіксний інкремент, що записується як ++$variable
, обчислюється в інкрементоване значення (PHP інкрементує змінну перед тим, як прочитати її значення, звідси назва «преінкремент»). Постфіксний інкремент, що записується як $variable++
, обчислюється в первісне значення змінної $variable до її збільшення (PHP спочатку читає значення змінної і потім інкрементує її, звідси назва «постинкремент»).
Поширені типи виразів – це вирази порівняння. Ці висловлювання оцінюються або як false
(брехня), або як true
(Істина). PHP підтримує операції порівняння > (більше), >= (більше чи одно), == (рівно), != (не рівно), < (менше) і <= (менше чи одно). Він також підтримує оператори суворої рівності: === (і одного типу) і !== (не одно чи одного типу). Зазвичай цими виразами користуються в операторах умовного виконання, наприклад, if
Останній приклад виразів, який буде розглянуто тут, це змішані вирази операції та присвоєння. Ми вже знаємо, що, якщо потрібно збільшити значення змінної $a на 1, можна просто написати $a++
или++$a
. Але що якщо потрібно додати більше одиниці, наприклад, 3? Можна було б написати $a++
багато разів, однак, очевидно, це не дуже раціонально та зручно. Найбільш поширена практика – запис виду $a = $a + 3
. Вираз $a + 3
обчислюється значення змінної $a, до якого додано 3 і знову присвоєно значення змінної $a, збільшуючи в результаті значення змінної $a на 3. У PHP, як і в ряді інших мов, наприклад Сі, дозволено записати це більш коротким чином, що збільшить очевидність сенсу і швидкість розуміння коду з часом. Додати 3 до поточного значення змінної $a можна, записавши $a += 3
. Це означає дослівно «взяти значення $a, додати до нього 3 і знову присвоїти його змінній $a». Окрім більшої зрозумілості та стислості, це швидше працює. Значенням виразу $a += 3
, Як і звичайного присвоєння, буде надано значення. Зауважте, що це НЕ 3, а підсумоване значення змінної $a плюс 3 (те, що було присвоєно пермінної $a). Тому дозволено використовувати будь-який бінарний оператор, наприклад, $a -= 5
(відняти 5 від значення змінної $a), $b *= 7
(помножити значення змінної $b на 7) тощо.
Існує ще один вираз, який може виглядати незвично, якщо ви не зустрічали його в інших мовах —тернарний умовний оператор:
Loading...
Якщо значення першого виразу - true
(ненульове значення), то виконується друге подвыражение, яке буде результатом умовного висловлювання. Або виконується третій вираз і його значення буде результатом.
Завдання наступного прикладу — допомогти трохи покращити розуміння префіксного та постфіксного інкременту та виразів:
Loading...
Іноді вирази розглядаються як інструкції. В даному випадку в інструкції наступний вид -expr ;
»— вираження з наступною за ним крапкою з комою. У записі $b = $a = 5;
$a = 5
— це вірний вираз, але він сам — не інструкція. Тоді як вираз $b = $a = 5;
- Правильна інструкція.
Останнє, що треба згадати, – це істинність значення виразів. Зазвичай в умовних операторах і циклах може цікавити не конкретне значення висловлювання, лише його істинність (значення true
або false
). Константи true
і false
(реєстронезалежні) - це два можливі логічні значення. Вирази можна автоматично перетворити на логічне значення. Докладніше про те, як це зробити, розказано в розділ про наведення типів
Мова PHP з усією повнотою та потужністю реалізує вирази, і їхнє повне документування виходить за рамки цього посібника. Приклади вище дають уявлення про висловлювання, про те, що вони собою представляють, і як можна створювати корисні вирази. Для позначення будь-якого правильного виразу PHP у цій документації буде використано скорочення expr.