PHP: Явное преобразование типов
В реальных программах часто возникает ситуация, когда данные одного типа нужно превратить в другой. Это особенно актуально, например, при обработке ввода пользователя или данных из веб-форм. Там все приходит в виде строк, даже если вы ввели число.

PHP умеет преобразовывать типы автоматически — мы видели это в уроке про слабую типизацию. Но полагаться на неявные преобразования опасно. Когда вы точно знаете, какой тип хотите получить, лучше преобразовать значение явно. Для этого в PHP есть специальный синтаксис: перед значением в скобках указывается желаемый тип. Такая операция называется приведением типа (type casting). Явный код понятнее и предсказуемее.
Преобразование строки в число
Представим, что мы получили из формы строку '345', а нам нужно сложить это число с другим:
<?php
$number = (int) '345';
print_r($number + 5); // => 350Оператор (int) получает строку и превращает ее в целое число.
<?php
$value = '0';
$convertedValue = (int) $value;
print_r($convertedValue); // => 0
print_r((int) '10'); // => 10
print_r((int) 3.5); // => 3 (дробная часть отбрасывается)'123' ──(int)──→ 123 ──(float)──→ 123.0
│
(string)
↓
'123'Преобразование в строку с помощью (string)
Если нужно превратить число в строку, используйте оператор (string):
<?php
print_r((string) 10); // => '10'
print_r((string) 3.5); // => '3.5'Это полезно, например, при формировании текстов, сообщений и вывода:
<?php
$age = 42;
print_r('Age: ' . (string) $age); // => Age: 42Преобразование в число с плавающей точкой с помощью (float)
Если нужно число с десятичной точкой, используйте (float):
<?php
print_r((float) '2.7'); // => 2.7Выражение (float) 5 тоже сработает: получится дробное число 5.0, хотя print_r() выведет его без дробной части — как 5.
Множественные преобразования
Приведение типа можно использовать и внутри составных выражений. В более сложных ситуациях встречаются множественные преобразования: (string) (5 + ((int) '4')). Порядок вычисления этого выражения следующий:
<?php
(int) '4'; // 4
5 + 4; // 9
(string) 9; // '9'На текущий момент мы знакомы только с несколькими типами, но приведение работает для любого типа.
Задание
Термометр показывает температуру с десятичной точкой. Программа должна вывести только целое значение с подписью.
У вас есть переменная:
<?php
$temperature = 36.6;Напишите программу, которая:
- Преобразует температуру в целое число.
- Полученное число превратит в строку.
- Выведет эту строку на экран, добавив через пробел подпись
°C.
Используйте операторы приведения типа (int) и (string).
Полезное
PHP: Явное преобразование типов
В реальных программах часто возникает ситуация, когда данные одного типа нужно превратить в другой. Это особенно актуально, например, при обработке ввода пользователя или данных из веб-форм. Там все приходит в виде строк, даже если вы ввели число.

PHP умеет преобразовывать типы автоматически — мы видели это в уроке про слабую типизацию. Но полагаться на неявные преобразования опасно. Когда вы точно знаете, какой тип хотите получить, лучше преобразовать значение явно. Для этого в PHP есть специальный синтаксис: перед значением в скобках указывается желаемый тип. Такая операция называется приведением типа (type casting). Явный код понятнее и предсказуемее.
Преобразование строки в число
Представим, что мы получили из формы строку '345', а нам нужно сложить это число с другим:
<?php
$number = (int) '345';
print_r($number + 5); // => 350Оператор (int) получает строку и превращает ее в целое число.
<?php
$value = '0';
$convertedValue = (int) $value;
print_r($convertedValue); // => 0
print_r((int) '10'); // => 10
print_r((int) 3.5); // => 3 (дробная часть отбрасывается)'123' ──(int)──→ 123 ──(float)──→ 123.0
│
(string)
↓
'123'Преобразование в строку с помощью (string)
Если нужно превратить число в строку, используйте оператор (string):
<?php
print_r((string) 10); // => '10'
print_r((string) 3.5); // => '3.5'Это полезно, например, при формировании текстов, сообщений и вывода:
<?php
$age = 42;
print_r('Age: ' . (string) $age); // => Age: 42Преобразование в число с плавающей точкой с помощью (float)
Если нужно число с десятичной точкой, используйте (float):
<?php
print_r((float) '2.7'); // => 2.7Выражение (float) 5 тоже сработает: получится дробное число 5.0, хотя print_r() выведет его без дробной части — как 5.
Множественные преобразования
Приведение типа можно использовать и внутри составных выражений. В более сложных ситуациях встречаются множественные преобразования: (string) (5 + ((int) '4')). Порядок вычисления этого выражения следующий:
<?php
(int) '4'; // 4
5 + 4; // 9
(string) 9; // '9'На текущий момент мы знакомы только с несколькими типами, но приведение работает для любого типа.
Задание
Термометр показывает температуру с десятичной точкой. Программа должна вывести только целое значение с подписью.
У вас есть переменная:
<?php
$temperature = 36.6;Напишите программу, которая:
- Преобразует температуру в целое число.
- Полученное число превратит в строку.
- Выведет эту строку на экран, добавив через пробел подпись
°C.
Используйте операторы приведения типа (int) и (string).
Полезное
Ваше упражнение проверяется по этим тестам
<?php
namespace HexletBasics\DataTypes\DataTypesCasting;
use HexletBasics\Exercise\TestCase;
class SolutionTest extends TestCase
{
public function test()
{
$expected = '36 °C';
$this->assertOutput($expected);
}
}Решение учителя откроется через:
20:00
