Какие типы данных поддерживаются в PHP?

«Какие типы данных поддерживаются в PHP?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PHP поддерживает 8 основных типов данных, которые делятся на три категории: скалярные, составные и специальные.

1. Скалярные типы (Scalar Types)

  • bool - логический тип

    $isActive = true;
    $isAdmin = false;
  • int - целые числа

    $count = 42;
    $negative = -100;
    $hex = 0x1A; // 26 в десятичной
  • float (или double) - числа с плавающей точкой

    $price = 19.99;
    $pi = 3.14159;
    $scientific = 1.2e3; // 1200
  • string - строки

    $name = "John";
    $multiline = "Line 1nLine 2";
    $heredoc = <<<EOT
    This is a heredoc string
    spanning multiple lines
    EOT;

2. Составные типы (Compound Types)

  • array - массивы

    // Индексный массив
    $numbers = [1, 2, 3, 4, 5];
    
    // Ассоциативный массив
    $user = [
        'name' => 'John',
        'email' => 'john@example.com',
        'age' => 30
    ];
  • object - объекты

    class User {
        public string $name;
        public int $age;
    }
    
    $user = new User();
    $user->name = 'John';
    $user->age = 30;

3. Специальные типы (Special Types)

  • resource - ресурсы (ссылки на внешние ресурсы)

    $file = fopen('data.txt', 'r'); // $file - ресурс
    $connection = mysqli_connect('localhost', 'user', 'pass', 'db');
  • NULL - отсутствие значения

    $uninitialized = null;
    $deleted = unset($variable); // переменная становится NULL

Псевдотипы (Pseudotypes) для type-hinting:

  • mixed - любой тип
  • void - отсутствие возвращаемого значения
  • iterable - массив или объект, реализующий Traversable
  • callable - функция или метод, который можно вызвать

Строгая типизация (Strict Types):

declare(strict_types=1);

function add(int $a, int $b): int {
    return $a + $b;
}

// Теперь вызов add('5', 10) вызовет TypeError