🧱 Суть
PHP – язык с динамической типизацией: тип переменной определяется во время выполнения программы.
Одна и та же переменная может хранить значения разных типов:
$value = 10;
$value = "hello";PHP автоматически преобразует типы в некоторых ситуациях (type juggling).
📦 Проблема
1. Неявное преобразование может давать неожиданные результаты
$result = "10" + 5;
echo $result; // 15PHP автоматически преобразовал строку в число.
2. Сравнение разных типов может вести себя неожиданно
var_dump(0 == "hello");Без понимания правил приведения типов результат может быть неожиданным.
3. Ошибки из-за неправильного типа данных
Например, функция ожидает число:
function sum(int $a, int $b) {}Но получает строку:
sum("10", "20");✅ Решение
Понимать основные типы данных PHP и контролировать преобразование типов.
💻 Основные типы данных
Скалярные типы
Integer – целые числа:
$age = 25;Float – числа с плавающей точкой:
$price = 99.99;String – строки:
$name = "Evgeniy";Boolean – логические значения:
$isActive = true;Составные типы
Array – массив:
$users = ["Alex", "Bob"];Object – объект:
$user = new User();Специальные типы
Null – отсутствие значения:
$value = null;Resource – внешний ресурс:
$file = fopen("test.txt", "r");Проверка типов
Получить тип:
var_dump($value);Пример:
$value = "123";
var_dump($value);Результат:
string(3) "123"Проверить конкретный тип:
is_string($value);
is_int($value);
is_array($value);
is_null($value);Неявное приведение типов
PHP сам меняет тип в некоторых операциях:
$num = "10";
$result = $num + 5;
echo $result;Результат:
15Строка "10" автоматически стала числом.
Явное приведение типов
Можно вручную изменить тип:
$value = "123";
$number = (int) $value;Теперь:
var_dump($number);Результат:
int(123)Основные преобразования:
(int) // integer
(float) // float
(string) // string
(bool) // boolean
(array) // array
(object) // objectСтрогое сравнение
Для сравнения значения и типа используется:
===Пример:
10 == "10"; // true
10 === "10"; // false== сравнивает только значение.
=== сравнивает значение и тип.
🎯 Вывод
- PHP использует динамическую типизацию
- переменные могут менять тип во время выполнения
- PHP умеет автоматически приводить типы
- явное приведение
(int),(string)помогает контролировать данные - для безопасного сравнения лучше использовать
=== - понимание типов помогает избегать скрытых ошибок