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