PHP Manual

Типи даних в PHP

23. 08. 2019

Всі дані, що обробляються в PHP, мають певний тип. Наприклад, ціле число, рядок або логічне значення (true/false).

Основні типи даних

Базові типи ще називають примітивними типами даних, або скалярними типами.

| Тип | Назва | Опис | Опис |---------|-----------------|-------| | int | Ціле число | (integer) Містить тільки ціле число. Максимальне значення визначається кількістю розрядів. На 32-бітному PHP діапазон від -2 147 483 648 до -2 147 483 647 (~ ± 2 мільярди), на 64-бітному PHP діапазон від -9 223 372 036 854 775 808 до -9 223 372 036 854 775 807 (~ ± 9 квінтильйонів). Максимальне значення завжди можна отримати, викликавши константу PHP_INT_MAX. Якщо максимальне значення цілого числа буде перевищено, PHP представить число як float і автоматично перезапише його. | float | Десяткове число з плаваючою комою | Це варіант числа з плаваючою комою, для якого застосовується правило "чим менше, тим точніше ". Число зберігається всередині у вигляді так званої мантисси і експоненти, тобто фактично зберігається 2 числа, між якими виконується операція мантисса * (2^експонента), що дає можливість зберігати дійсно величезний діапазон чисел. При цьому використовується принцип, що для великих чисел нам не завжди потрібно знати їх точне значення, але ми хочемо заощадити якомога більше пам'яті. Числа типу "плаваючі" не потребують точного зберігання і не повинні використовуватися для обчислення грошей. | string | Рядок | Містить послідовність символів, які розділені лапками або апострофами. Максимальна довжина обмежується лише об'ємом оперативної пам'яті. Рядок може зберігатися в будь-якому кодуванні, містити емодзі або двійкові дані. | bool | Boolean | (boolean) Булеве значення з булевої алгебри, може містити тільки істина або хибність. | null | Порожнє значення | Порожнє значення null корисне для випадків, коли ми хочемо висловити, що чогось не існує. Наприклад, стаття не має категорії. Іноді null некоректно замінюють на нуль (0) або порожні рядки (''), але це не є вдалим рішенням для вираження неіснування.

Попередження: Тип null не є скалярним.

Нуль (0) проти нуля

Багатьом розробникам важко зрозуміти різницю між 0 (нулем) і null (неіснуючим значенням), коли вони починають розробку.

Цю відмінність можна дуже добре і з гумором пояснити за допомогою наступної картинки:

0 vs null

Ручне перепакування

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

Наприклад:

$pi = 3.14;
echo $pi; // виводить 3.14
echo (int) $pi; // виводить 3

Динамічне поповнення

Розглянемо наступні 2 змінні:

$x = 10;
$y = '10';

Яка різниця між вмістом змінних $x та $y?

Змінна $x - число, $y - рядок (містить "1" і "0"), тому якщо ми просто збережемо змінну в пам'яті і не будемо виконувати ніяких операцій, які вплинуть на її значення. Наприклад, наступні 2 записи повернуть однаковий результат:

echo $x + 5; // виводить 15
echo $y + 5; // виводить 15

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

Примітка: Важливо зазначити, що ми не можемо перетворювати типи даних повністю довільно, тому це не завжди можливо. Якщо перезаписати тип даних в якийсь інший (несумісний), то або перетворення може не відбутися взагалі, або вихідний вміст може бути зіпсований або повністю знищений і замінений на інший. Наприклад, якщо переписати рядок в ціле число (а в змінній зберігається деякий текст, що не є числом), то замість числового значення в змінній буде зберігатись значення 1.

Порівняння типів

При порівнянні значень потрібно враховувати різні типи даних.

В загальному випадку оператор == використовується для загального порівняння двох значень (незалежно від типів), в той час як === порівнює як значення, так і тип даних.

Наприклад:

$a = '';
$b = null;
if ($a == $b) {
// Буде оцінено як TRUE, тому що
// відбувається перетворення типу даних.
}
if ($a === $b) {
// Виконує набагато більш сувору перевірку
// і він не пройде, бо він не такий, як усі.
// вміст та інший тип даних, тому
// цей код ніколи не виконається.
}

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
5.
Status:
All systems normal.
2024