Основные типы значений в PHP: классификация и практическое применение
Раздел: Программирование на PHP -> Работа с типами и настройками
Работа с типами данных в PHP: от определения до преобразования
Как наиболее эффективно проверить и преобразовать тип переменной?
Основной подход - использовать набор встроенных функций is_* для проверки типа и операторы явного приведения (int), (float), (string) для преобразования. Этот способ даёт максимальный контроль над типами и читаемость кода.
$number = "42";
if (is_numeric($number)) {
$intValue = (int) $number;
echo $intValue; // 42
}
Типичная ошибка: использование
is_int() для строки, содержащей число - вернёт false. Следует применять is_numeric() перед приведением. Также при приведении дробных чисел к (int) происходит отбрасывание дробной части без округления.Цель: валидация пользовательского ввода, безопасная работа с API, строгая типизация в функциях.
Какие альтернативные подходы существуют для работы с типами?
Вместо is_* можно использовать функцию gettype(), которая возвращает строковое название типа. Для преобразования - settype(), изменяющая тип переменной «на месте».
$var = 3.14;
echo gettype($var); // double
settype($var, 'integer');
echo $var; // 3
Функция
settype() меняет исходную переменную, что может быть неочевидно. gettype() не различает float и double - всегда возвращает double. Для объектов применяется instanceof.Когда использовать: gettype() удобна для отладки, settype() - при необходимости однократного изменения типа без создания новой переменной.
Расширенные примеры работы с типами в PHP
Полный набор проверок и преобразований типов с демонстрацией результатов.
Проверка типа с помощью is_* функций
Пример
$values = [42, 3.14, "hello", true, [1,2], null, fopen('php://memory','r')];
foreach ($values as $v) {
echo is_int($v) ? 'int ' : '';
echo is_float($v) ? 'float ' : '';
echo is_string($v) ? 'string ' : '';
echo is_bool($v) ? 'bool ' : '';
echo is_array($v) ? 'array ' : '';
echo is_null($v) ? 'null ' : '';
echo is_resource($v) ? 'resource' : '';
echo PHP_EOL;
}
int float string bool array null resource
Явное приведение типов
Пример
$a = "123.45abc";
echo (int)$a; // 123
echo (float)$a; // 123.45
echo (string)123; // "123"
echo (bool)"false"; // true (непустая строка)
123 123.45 123 1
Сравнение с учётом типа (=== vs ==)
Пример
var_dump(0 == "0"); // bool(true)
var_dump(0 === "0"); // bool(false)
var_dump(null == false); // bool(true)
var_dump(null === false); // bool(false)
bool(true) bool(false) bool(true) bool(false)
Объявление строгих типов (declare)
Пример
declare(strict_types=1);
function add(int $a, int $b): int {
return $a + $b;
}
echo add(5, 10); // 15
// echo add("5", 10); // TypeError
15
Преобразование в объект и обратно
Пример
$arr = ['name' => 'John', 'age' => 30];
$obj = (object)$arr;
echo $obj->name; // John
$obj2 = new stdClass();
$obj2->value = 42;
$arr2 = (array)$obj2;
print_r($arr2);
John
Array
(
[value] => 42
)
Использование оператора instanceof
Пример
class Car {}
$myCar = new Car();
var_dump($myCar instanceof Car); // bool(true)
var_dump($myCar instanceof stdClass); // bool(false)
bool(true) bool(false)
Типы записей PHP - comments
En
Posts php type (php)