Типы данных PHP

В этой главе:

  • Что такое тип данных

  • Виды типов данных

  • Элементарные типы

Что такое тип данных

Тип данных — фундаментальное понятие теории программирования, определяющее множество значений и набор операций, которые можно применять к таким значениям, и, возможно, способ реализации хранения значений и выполнения операций. Любые данные, которыми оперируют программы, относятся к определённым типам.

Необходимость использования типов данных появилась в языках программирования высокого уровня как естественное отражение того факта, что обрабатываемые программой данные могут иметь различные множества допустимых значений, храниться в памяти компьютера различным образом, занимать различные объёмы памяти и обрабатываться с помощью различных команд процессора.

Виды типов данных

Все переменные хранят данные определенных типов. PHP автоматически выбирает тип переменной, соответствующий присвоенному значению. К таким типам данных относятся строки, числа и более сложные типы, такие как массивы и объекты. Последние два типа будут рассмотрены подробно позднее в других главах. А пока главное, что вы должны понять - если у вас нет особого повода позаботиться о типе переменной, PHP автоматически выполнит все необходимое, так что не беспокойтесь об этом.

В ситуациях, когда требуется конкретный тип данных, например при выполнении операции математического деления, PHP автоматически выполнит преобразование типов данных. Так, если у вас имеется строка из одного символа "2", она будет преобразована в целое число 2. Такие преобразования - практически всегда именно то, что вам и требовалось от PHP, и он делает это незаметно для вас.

PHP поддерживает следующие типы данных:

Четыре простых типа:

  • boolean

  • integer

  • float (это число с плавающей точкой, также известное как double)

  • string

Два смешанных типа: array (массив) и object (обьект). Они будут рассмотрены позже, в следующих главах.

И, наконец, два специальных типа:

  • resource

  • NULL

Для удобства понимания в этом руководстве используется также несколько псевдотипов.

Вы также можете найти несколько упоминаний типа двойной точности (double). Рассматривайте его как число с плавающей точкой, два имени существуют только по историческим причинам.

Как уже было упомянуто, программисту не нужно самому устанавливать тип переменной (хотя и можно сделать явное приведение типа самому, когда без этого нельзя обойтись), обычно за него это делает интерпретатор PHP во время выполнения программы, выбирая тип переменной в зависимости от контекста, в котором она используется.

Примечание: если вы хотите проверить тип и значение определённого выражения или переменной, используйте для этого функцию var_dump().

Тип переменной можно узнать при помощи функции gettype($variable), которая возвращает имя типа в строковом представлении.

Примеры:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
  $x_bool = true;   // логический тип
  $x_str  = "bar"// строковый тип
  $x_str2 = 'bar'// еще один строковый тип
  $x_int = 20;     // целочисленный тип
 
  echo gettype($x_bool); // выведет: boolean
  echo gettype($x_str);  // выведет: string
 
  var_dump($x_str2);        // выведет: string(3)'bar' - 3 кол-во символов в строке
  var_dump($x_int);         // выведет: int(20)
 
?>

Элементарные типы

PHP является слабо типизированным языком. Это означает, что нет необходимости объявлять тип данных, который должна хранить переменная. Так, в пределах одной и той же области видимости переменная $num может содержать как значение 2, так и строку 'два'.

Но это не означает, что в PHP нет понятия типа. Каждое значение, которое можно присвоить переменной, имеет свой тип. Вы можете определить тип значения переменной с помощью одной из встроенных функций проверки типов языка PHP. В таблице представленной ниже перечислины функции для проверки элементарных типов данных. Каждой функции передается переменная или значение, она возвращает значение true (истина), если аргумент относится к соответствующему типу и false в противном случае.

Имя функции

Тип

Описание

is_bool()

Boolean

Одно из двух значений: true или false

is_integer()

Integer

Целое число

is_double()

float/double/real

Вещественное число

is_string()

String

Символьные данные - строка

is_object()

Object

Объект

is_array()

Array

Массив

is_resource()

Resource

Дескриптор, используемый для идентификации работы с внешними ресурсами, такими как базы данных или файлы

is_null()

Null

Неинициализированное значение

Проверка типа переменной или значения особенно важна, когда вы будете работать с аргументами в методе или функции (о них вы узнаете позднее).