Gettype: примеры (PHP)
gettype(mixed $value): stringФункция gettype в PHP
Функция gettype возвращает строку, описывающую тип данных переданной переменной. Чаще всего она применяется при отладке скриптов для динамической проверки типа значения в ситуациях, когда он неизвестен заранее.
Функция принимает один обязательный аргумент:
- mixed $value – переменная, тип которой необходимо определить.
Возвращаемое значение – строка, которая может содержать одно из следующих обозначений: "boolean", "integer", "double" (для чисел с плавающей точкой), "string", "array", "object", "resource", "resource (closed)", "NULL", "unknown type".
Простые примеры для основных типов данных PHP:
echo gettype(true);boolean
echo gettype(100);integer
echo gettype(12.5);double
echo gettype("Текст");string
echo gettype([1, 2, 3]);array
echo gettype(null);NULL
Пример с ресурсом и закрытым ресурсом:
$file = fopen('example.txt', 'r');
echo gettype($file);
fclose($file);
echo gettype($file);resource resource (closed)
Для проверки типов часто удобнее использовать семейство функций is_*, которые возвращают логическое значение.
- is_int(), is_string(), is_bool() и другие – проверяют конкретный тип, что упрощает условные конструкции.
- get_debug_type() (появилась в PHP 8) – возвращает более точные имена типов (например,
"float"вместо"double"), а для объектов указывает имя класса. Эта функция считается более современной альтернативой для отладки.
Функция gettype полезна, когда нужна строковая метка типа. Для проверок в условиях предпочтительнее is_*, а в отладке на PHP 8+ – get_debug_type.
Передача несуществующей переменной вызывает предупреждение.
echo gettype($undefinedVariable);Warning: Undefined variable $undefinedVariable NULL
Сравнение строки результата без учета регистра или прямым сравнением может привести к ошибке.
if (gettype(5.5) == 'float') {
echo 'Это float';
} else {
echo 'Это не float';
}Это не float
Потому что gettype(5.5) возвращает "double", а не "float".
В PHP 8 сама функция gettype не изменилась. Однако, для более точной и удобной отладки была добавлена функция get_debug_type. Она возвращает исправленные имена типов (например, "float" вместо "double", "bool" вместо "boolean") и для объектов выводит имя класса.
echo get_debug_type(5.5);
echo gettype(5.5);float double
Использование в пользовательской функции для обработки разных типов данных.
function processValue($val) {
$type = gettype($val);
switch ($type) {
case 'integer':
return $val * 2;
case 'string':
return strtoupper($val);
case 'array':
return array_sum($val);
default:
return 'Тип ' . $type . ' не поддерживается';
}
}
echo processValue(10) . "\n";
echo processValue("hello") . "\n";
echo processValue([1,2,3]);20 HELLO 6
Проверка типа перед математической операцией.
$a = "10 строк";
if (gettype($a) == 'integer' || gettype($a) == 'double') {
$result = $a + 5;
} else {
$result = 'Ошибка: нечисловой тип';
}
echo $result;Ошибка: нечисловой тип
Анализ элементов внутри массива.
$data = [1, 'текст', 3.14, null];
foreach ($data as $item) {
echo gettype($item) . "\n";
}integer string double NULL
Обработка ресурсов.
$ch = curl_init();
echo gettype($ch) . "\n";
curl_close($ch);
// После закрытия тип изменится
echo gettype($ch);resource resource (closed)
Функция type() возвращает объект класса, а str(type()) – строковое представление.
print(type(10))
print(str(type(10)))Оператор typeof возвращает строку с именем типа, но имеет особенности (например, для null возвращает "object").
console.log(typeof 10);
console.log(typeof null);number object
Функция TYPE() не существует. Тип данных определяется при описании схемы таблицы. Для проверки типа значения в запросе можно использовать CAST() или проверку через REGEXP.
SELECT CAST(123 AS CHAR);123
Отличие PHP функции в том, что она работает только с переменными в коде, а не с данными из базы.