Манипуляции с типами
PHP не требует (и не поддерживает) явного определения типа при
объявлении переменной; тип переменной определяется по контексту, в
котором она используется. То есть, если вы присвоите строковое
значение переменной $var
,
$var
станет строкой. Если вы затем
присвоите $var
целочисленное значение, она
станет целым числом.
Примером автоматического преобразования типа является оператор
сложения '+'. Если любой из операндов является числом с плавающей
точкой, то все операнды интерпретируются как числа с плавающей
точкой, результатом будет также число с плавающей точкой. В
противном случае операнды будут интерпретироваться как целые числа
и результат также будет целочисленным. Обратите внимание, что это
НЕ меняет типы самих операндов; меняется только то, как они
вычисляются.
Если последние два примера вам непонятны, смотрите Преобразование строк
в числа.
Если вы хотите, чтобы переменная принудительно вычислялась как
определенный тип, смотрите раздел приведение
типов. Если вы хотите изменить тип переменной, смотрите
settype().
Если вы хотите протестировать любой из примеров, приведенных в
данном разделе, вы можете использовать функцию
var_dump().
Замечание:
Поведение автоматического преобразования в массив в настоящий
момент не определено.
Поскольку PHP (по историческим причинам) поддерживает
индексирование в строках с использованием такого же синтаксиса,
как и при индексировании массива, вышеприведенный пример приводит
к проблеме: следует ли $a стать массивом, первым элементом
которого будет "f" или "f" должна стать первым символом строки $a?
Текущая версия PHP воспринимает второе присваивание как
определение смещения строки, поэтому $a станет "f", результат же
этого автоматического преобразования следует, однако, рассматривать
как неопределенный. В PHP 4 для доступа к символам строки был
введен новый синтаксис фигурных скобок, используйте этот синтаксис
вместо вышеприведенного:
Для дополнительной информации смотрите раздел
Доступ к символу в
строке.
Приведение типов
Приведение типов в PHP работает так же, как и в C: имя требуемого
типа записывается в круглых скобках перед приводимой переменной.
Допускаются следующие приведения типов:
-
(int), (integer) - приведение к целому числу
-
(bool), (boolean) - приведение к булеву типу
-
(float), (double), (real) - приведение к числу с плавающей точкой (float)
-
(string) - приведение к строке
-
(array) - приведение к массиву
-
(object) - приведение к объекту
Обратите внимание, что внутри скобок допускаются пробелы и
символы табуляции, поэтому следующее равносильно по своему
действию:
Замечание:
Вместо приведения переменной к строке, вы можете заключить ее в
двойные кавычки.
Возможно, вам не совсем ясно, что происходит при приведении
между типами. Для дополнительной информации смотрите разделы: