← Назад к вопросам
Назовите простые (скалярные) типы данных в PHP.
1.0 Junior🔥 241 комментариев
#PHP Core
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Скалярные типы данных в PHP
Скалярные типы (или простые типы) - это типы данных, которые содержат одно значение. В PHP есть четыре основных скалярных типа. Расскажу про каждый в деталях.
1. Integer (Целое число)
Целые числа без дробной части. В PHP это 32-bit или 64-bit значение в зависимости от платформы.
// Объявление integer
$age = 25;
$quantity = 100;
$temperature = -15;
// Разные представления
$decimal = 1234; // Десятичное
$hexadecimal = 0x1A; // Шестнадцатеричное (26)
$octal = 0o12; // Восьмеричное (10)
$binary = 0b1010; // Двоичное (10)
// Проверка типа
var_dump(is_int($age));
var_dump(gettype($age)); // "integer"
// Максимальное значение
echo PHP_INT_MAX; // 9223372036854775807
echo PHP_INT_MIN; // -9223372036854775808
// Проверка переполнения
if (is_int(500000 * 500000)) {
echo "Int";
} else {
echo "Float"; // При переполнении станет float
}
Особенности:
- Целые числа без десятичной точки
- Автоматически конвертируется в float при переполнении
- Можно использовать в операциях: +, -, *, /, %
2. Float (Плавающая точка)
Числа с дробной частью, также называемые double или real.
// Объявление float
$price = 19.99;
$pi = 3.14159;
$scientific = 1.2e3; // 1200
$small = 1.5e-2; // 0.015
$negative = -3.14;
// Проверка типа
var_dump(is_float($price));
var_dump(gettype($price)); // "double"
// Предельные значения
echo PHP_FLOAT_MAX; // Максимальное значение
echo PHP_FLOAT_MIN; // Минимальное положительное значение
// ВАЖНО: проблемы с точностью!
$a = 0.1;
$b = 0.2;
$c = 0.3;
var_dump($a + $b == $c); // false! Из-за погрешности в бинарном представлении
// Правильный способ сравнения
var_dump(abs($a + $b - $c) < PHP_FLOAT_EPSILON); // true
// Для финансовых операций - используй string или decimal
use Brick\Math\BigDecimal;
$amount = BigDecimal::of('0.1')->plus(BigDecimal::of('0.2'));
Особенности:
- Могут быть очень большие или очень маленькие числа
- НЕ точны для финансовых операций (используй BCMath или BigDecimal)
- Сравнивай с epsilon для проверки равенства
- Используется 64-bit представление (IEEE 754)
3. String (Строка)
Последовательность символов, заключенная в кавычки.
// Различные способы объявления
$simple = 'Hello'; // Single quotes - буквальные
$double = "Hello"; // Double quotes - интерпретируются переменные
$heredoc = <<<EOT
Multi-line
string with variables: $simple
EOT;
$nowdoc = <<<'EOT'
Multi-line
but no variable interpolation
EOT;
// Интерпретация переменных
$name = 'John';
echo "Hello, $name"; // "Hello, John"
echo "Hello, {$name}s"; // "Hello, Johns"
echo "Hello, {$name['key']}"; // Доступ к элементам массива
// Экранирование
$quote = "He said \"Hi\"";
$tab = "Column1\tColumn2";
$newline = "Line1\nLine2";
$backslash = "Path: C:\\Users\\John";
// Проверка типа
var_dump(is_string($simple)); // true
var_dump(gettype($simple)); // "string"
// Основные операции
$str = "Hello";
echo strlen($str); // 5 - длина
echo strtoupper($str); // HELLO
echo strtolower($str); // hello
echo substr($str, 1, 3); // ell
echo strpos($str, 'l'); // 2 - позиция первого 'l'
echo str_replace('l', 'L', $str); // HeLLo
// Строки как массивы
$char = $str[0]; // 'H'
$char = $str[-1]; // 'o' - последний символ (PHP 7.1+)
Особенности:
- Разные способы определения (single, double, heredoc, nowdoc)
- Интерпретация переменных в double quotes и heredoc
- Доступ к символам по индексу как к массиву
- Обширная библиотека функций для работы (str*, substr, strlen и т.д.)
4. Boolean (Логическое значение)
Принимает только два значения: true (истина) или false (ложь).
// Прямое определение
$isActive = true;
$isEmpty = false;
// Результаты условных операций
$isGreater = 10 > 5; // true
$isEqual = 5 == 5; // true
$isNotEqual = 5 != 5; // false
$isLess = 5 < 10; // true
// Логические операции
$a = true;
$b = false;
var_dump($a && $b); // false (AND)
var_dump($a || $b); // true (OR)
var_dump(!$b); // true (NOT)
var_dump($a and $b); // false (AND с более низким приоритетом)
var_dump($a or $b); // true (OR с более низким приоритетом)
// Проверка типа
var_dump(is_bool(true)); // true
var_dump(gettype(true)); // "boolean"
// Автоматическая конвертация
if (1) echo "true"; // Выведет
if (0) echo "false"; // Не выведет
if ("text") echo "true"; // Выведет
if ("") echo "empty"; // Не выведет
if (null) echo "null"; // Не выведет
if (array()) echo "array"; // Не выведет
// Явное преобразование
var_dump((bool)1); // true
var_dump((bool)0); // false
var_dump((bool)""); // false
var_dump((bool)"0"); // false
var_dump((bool)"text"); // true
var_dump((bool)null); // false
Особенности:
- Только два значения: true и false
- Case-insensitive: TRUE, True, true работают одинаково
- Используется в условных операторах (if, while, for)
- Автоматическая конвертация из других типов
Правила конвертации типов
// String to Int/Float
var_dump((int)"123abc"); // 123
var_dump((int)"abc123"); // 0
var_dump((float)"3.14abc"); // 3.14
// Number to String
var_dump((string)123); // "123"
var_dump((string)3.14); // "3.14"
// Any to Boolean
var_dump((bool)0); // false
var_dump((bool)1); // true
var_dump((bool)""); // false
var_dump((bool)"0"); // false (внимание!)
var_dump((bool)"text"); // true
var_dump((bool)null); // false
var_dump((bool)array()); // false
var_dump((bool)[1, 2]); // true
Type Hints в PHP 7.0+
// Объявление типов параметров
function add(int $a, int $b): int {
return $a + $b;
}
echo add(5, 3); // 8
echo add("5", "3"); // 8 (с strict_types=0 конвертирует)
// Строгая типизация
declare(strict_types=1);
function divide(float $a, float $b): float {
if ($b == 0) throw new Exception('Division by zero');
return $a / $b;
}
divide(10, 2); // 5.0
divide("10", "2"); // TypeError - строгая типизация
Инструменты для работы со скалярными типами
// Проверка типа
var_dump(is_int($var));
var_dump(is_float($var));
var_dump(is_string($var));
var_dump(is_bool($var));
var_dump(is_numeric($var)); // int или float или "123"
var_dump(is_scalar($var)); // int, float, string, bool
// Получение типа
echo gettype($var);
// Преобразование типов
$int = (int)"123";
$float = (float)"3.14";
$string = (string)123;
$bool = (bool)1;
// Intval, floatval, strval, boolval
$val = intval("123.45"); // 123
$val = floatval("123.45"); // 123.45
$val = strval(123); // "123"
$val = boolval(1); // true
Итог
Вот четыре скалярных типа PHP:
| Тип | Пример | Использование |
|---|---|---|
| Integer | 42, -5, 0xFF | Целые числа, ID, счетчики |
| Float | 3.14, 1.5e3 | Дроби, вычисления (осторожно!) |
| String | "text", 'text' | Текст, имена, URL, JSON |
| Boolean | true, false | Условия, флаги, результаты |
Все остальные типы в PHP - это составные (composite): массивы, объекты, ресурсы и т.д.