Типы
PHP Manual

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

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

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

<?php
$foo 
"1";  // $foo is string (ASCII 49)
$foo *= 2;   // $foo is now an integer (2)
$foo $foo 1.3;  // $foo is now a float (2.6)
$foo "10 Little Piggies"// $foo is integer (50)
$foo "10 Small Pigs";     // $foo is integer (50)
?>

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

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

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

Замечание:

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

К тому же, так как PHP поддерживает индексирование в строках аналогично смещениям элементов массивов, следующий пример будет верен для всех версий PHP:

<?php
$a    
'car'// $a - это строка
$a[0] = 'b';   // $a все еще строка
echo $a;       // bar
?>

Более подробно смотрите в разделе Доступ к символу в строке.

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

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

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

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

Приведение типа (binary) и поддержка префикса b были добавлены в PHP 5.2.1

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

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

Приведение строковых литералов и переменных к бинарным строкам:

<?php
$binary 
= (binary) $string;
$binary b"binary string";
?>

Замечание:

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

<?php
$foo 
10;            // $foo - это целое число
$str "$foo";        // $str - это строка
$fst = (string) $foo// $fst - это тоже строка

// Это напечатает "они одинаковы"
if ($fst === $str) {
    echo 
"они одинаковы";
}
?>

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


Типы
PHP Manual