Псевдо-типы, используемые в этой документации
Переменные
Типы
PHP Manual

## Манипуляции с типами

PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присвоите строковое значение переменной `$var` , `$var` станет строкой. Если вы затем присвоите `$var` целочисленное значение, она станет целым числом.

Примером автоматического преобразования типа является оператор сложения '+'. Если любой из операндов является числом с плавающей точкой, то все операнды интерпретируются как числа с плавающей точкой, результатом будет также число с плавающей точкой. В противном случае операнды будут интерпретироваться как целые числа и результат также будет целочисленным. Обратите внимание, что это НЕ меняет типы самих операндов; меняется только то, как они вычисляются.

`<?php
$foo = "0"; // $foo это строка (ASCII 48)
$foo += 2; // $foo теперь целое число (2)
$foo = $foo + 1.3; // $foo теперь число с плавающей точкой (3.3)
$foo = 5 + "10 Little Piggies"; // $foo это целое число (15)
$foo = 5 + "10 Small Pigs"; // $foo это целое число (15)
?>`

Если последние два примера вам непонятны, смотрите Преобразование строк в числа.

Если вы хотите, чтобы переменная принудительно вычислялась как определенный тип, смотрите раздел приведение типов. Если вы хотите изменить тип переменной, смотрите settype().

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

> Замечание: Поведение автоматического преобразования в массив в настоящий момент не определено.

> `<?php
> $a = "1"; // $a это строка
> $a[0] = "f"; // А как же смещение строки? Что произойдет?
> ?>`

> Поскольку PHP (по историческим причинам) поддерживает индексирование в строках с использованием такого же синтаксиса, как и при индексировании массива, вышеприведенный пример приводит к проблеме: следует ли $a стать массивом, первым элементом которого будет "f" или "f" должна стать первым символом строки $a?
> Текущая версия PHP воспринимает второе присваивание как определение смещения строки, поэтому $a станет "f", результат же этого автоматического преобразования следует, однако, рассматривать как неопределенный. В PHP 4 для доступа к символам строки был введен новый синтаксис фигурных скобок, используйте этот синтаксис вместо вышеприведенного:

> `<?php
> $a = "abc"; // $a это строка
> $a{1} = "f"; // $a теперь содержит "afc"
> ?>`

> Для дополнительной информации смотрите раздел Доступ к символу в строке.

### Приведение типов

Приведение типов в PHP работает так же, как и в C: имя требуемого типа записывается в круглых скобках перед приводимой переменной.

`<?php
$foo = 10; // $foo это целое число
$bar = (boolean) $foo; // $bar это булев тип
?>`

Допускаются следующие приведения типов:

- (int), (integer) - приведение к целому числу
- (bool), (boolean) - приведение к булеву типу
- (float), (double), (real) - приведение к числу с плавающей точкой (float)
- (string) - приведение к строке
- (array) - приведение к массиву
- (object) - приведение к объекту

Обратите внимание, что внутри скобок допускаются пробелы и символы табуляции, поэтому следующее равносильно по своему действию:

`<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>`

> Замечание: Вместо приведения переменной к строке, вы можете заключить ее в двойные кавычки.

> `<?php
> $foo = 10; // $foo это целое число
> $str = "$foo"; // $str это строка
> $fst = (string) $foo; // $fst это также строка
> // Это напечатает "они одинаковы"
> if ($fst === $str) {
> echo "они одинаковы";
> }
> ?>`

Возможно, вам не совсем ясно, что происходит при приведении между типами. Для дополнительной информации смотрите разделы:

- Преобразование в булев тип
- Преобразование в целое число
- Преобразование в число с плавающей точкой
- Преобразование в строку
- Преобразование в массив
- Преобразование в объект
- Преобразование в ресурс
- Таблицы сравнения типов

Псевдо-типы, используемые в этой документации
Переменные
Типы
PHP Manual