РНР является языком со слабой типизацией, который позволяет объявлять переменную и ее тип путем простого использования этой переменной. Если необходимо, он также осуществляет автоматическое преобразование одного типа в другой. Этот процесс называется неявным преобразованием типов.
Однако могут возникнуть стуации, когда присущее РНР неявное преобразование типов станет совсем нежелательным действием. Рассматривая пример, обратите внимание на то, что входные данные для операции деления являются целыми числами. По умолчанию РНР осуществляет преобразование выходных данных к числу с плавающей точкой, для того чтобы получалось наиболее точное значение — 4,66 и 6 в периоде.
Пример. Этот пример возвращает число с плавающей точкой
<?php
$а = 56;
$b - 12;
$с = $а / $b;
echo $с;
?>
Но что делать, если вместо этого нужно получить значение переменной $с
в виде целого числа? Этого можно добиться разными способами, одним из которых является принудительное преобразование результата $а/$b
в целое число путем использования оператора преобразования (int)
:
$с = (int) ($а / $b);
Этот способ называется явным преобразованием типов. Обратите внимание на то, что для обеспечения преобразования в целое число значения всего выражения это выражение помещено в круглые скобки. В противном случае преобразованию подверглось бы только значение переменной $а
, что не имело бы никакого смысла, поскольку деление на значение переменной $b
все равно вернуло бы результат в виде числа с плавающей точкой.
Можно провести явное преобразование значений в те типы, которые показаны в таблице, но обычно его можно избежать, используя преобразование за счет вызова одной из встроенных функций РНР. Например, для получения целочисленного значения можно использовать функцию intval
. Этот раздел, как и многие другие в этом курсе, предназначен в основном для того, чтобы помочь разобраться с чужим кодом, который может вам повстречаться.
Тип преобразования | Описание |
---|---|
(int) (integer) | Преобразование в целое число путем отбрасывания десятичной части |
(bool) (boolean) | Преобразование в булево значение |
(float) (double) (real) | Преобразование в число с плавающей точкой |
(string) | Преобразование в строку |
(array) | Преобразование в массив |
(object) | Преобразование в объект |
Инструкция continue | Динамическое связывание в РНР |