Перейти к основному содержимому

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

Приведение типов означает намеренное преобразование значения в другой тип данных, например числа с плавающей точкой в целое. Вместо того чтобы оставить решение за PHP, вы сами выбираете, какой тип получит переменная.

Синтаксис короткий: напишите нужный тип в круглых скобках прямо перед переменной или значением.

Вот операторы приведения типов:

  • (string) — даёт String
  • (int) — даёт Integer
  • (float) — даёт Float
  • (bool) — даёт Boolean
  • (array) — даёт Array
  • (object) — даёт Object
  • (unset) — устарел; даёт NULL

Приведение к строке

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

Пример приведения к строке

Пять значений разных типов становятся строками, и var_dump() подтверждает результат. Обратите внимание, что true превращается в «1», а NULL — в пустую строку:

Prompt
Напишите PHP-скрипт, который создаёт переменные разных типов (целое число 5, число с плавающей точкой 5.34, строку "hello", логическое значение true, NULL) и приводит каждую к строке с помощью (string), а затем использует var_dump() для проверки.
Вывод: PHP-скрипт

Приведение к целому числу

Целое число получается, когда (int) стоит прямо перед переменной или значением.

Пример приведения к целому числу

Здесь значения нескольких типов приводятся к целому числу. Скрипт только выполняет преобразования, поэтому ничего не выводит:

Prompt
Напишите PHP-скрипт, который создаёт переменные разных типов (целое число, число с плавающей точкой, строки, логическое значение, NULL) и приводит каждую к целому числу с помощью (int).
Вывод: PHP-скрипт

Приведение к числу с плавающей точкой

Чтобы получить число с плавающей точкой, напишите (float) перед переменной или значением.

Пример приведения к числу с плавающей точкой

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

Prompt
Напишите PHP-скрипт, который создаёт переменные разных типов и приводит каждую к числу с плавающей точкой с помощью (float).
Вывод: PHP-скрипт

Приведение к логическому значению

Написав (bool) перед переменной или значением, вы получаете логическое значение.

Результат равен false для 0, NULL, false и всего пустого. Всё остальное становится true, в том числе отрицательные числа, такие как -1.

Пример приведения к логическому значению

Здесь девять значений приводятся к логическому типу. Только $c, $g и $i становятся false, хотя скрипт ничего не выводит:

Prompt
Напишите PHP-скрипт, который создаёт переменные разных типов, включая 0, -1, 0.1, пустую строку и NULL, а затем приводит каждую к логическому типу с помощью (bool).
Вывод: PHP-скрипт

Приведение к массиву

Используйте (array) перед переменной или значением, чтобы получить массив.

Результат зависит от исходного значения. Большинство типов превращается в индексированный массив с одним элементом, а NULL — в пустой массив.

Объект становится ассоциативным массивом: каждое имя свойства превращается в ключ, а каждое значение свойства — в значение этого ключа.

Пример приведения к массиву

Каждое из этих значений становится массивом. Вывода нет, потому что скрипт их нигде не выводит:

Prompt
Напишите PHP-скрипт, который создаёт переменные разных типов и приводит каждую к массиву с помощью (array).
Вывод: PHP-скрипт

Преобразование объекта в массив

Здесь объект Car становится массивом, а var_dump() показывает два его свойства как ключи:

Prompt
Напишите PHP-скрипт, который определяет класс Car со свойствами color и model, создаёт экземпляр, приводит его к массиву и использует var_dump() для вывода результата.
Вывод: PHP-скрипт

Приведение к объекту

Используйте (object) перед переменной или значением, чтобы получить объект.

Большинство типов превращается в объект с единственным свойством «scalar», которое хранит исходное значение. NULL даёт пустой объект.

Массивы естественно отображаются на свойства. В индексированном массиве каждый номер индекса становится именем свойства, а в ассоциативном — каждый ключ. В обоих случаях значения массива становятся значениями свойств.

Пример приведения к объекту

Каждое из этих значений становится объектом. Скрипт ничего не выводит:

Prompt
Напишите PHP-скрипт, который создаёт переменные разных типов и приводит каждую к объекту с помощью (object).
Вывод: PHP-скрипт

Преобразование массивов в объекты

Один индексированный и один ассоциативный массив становятся объектами. Вывода снова нет:

Prompt
Напишите PHP-скрипт, который создаёт индексный массив и ассоциативный массив, а затем приводит оба к объектам с помощью (object).
Вывод: PHP-скрипт

Приведение к NULL

Примечание: В PHP 7.2.0 приведение (unset) было объявлено устаревшим, а в PHP 8.0.0 удалено.

Чтобы получить NULL сегодня, просто присвойте NULL переменной:

Пример приведения к NULL

Какой бы тип ни был у каждой переменной раньше, после этого присваивания она равна NULL. Ничего не выводится:

Prompt
Напишите PHP-скрипт, который создаёт переменные разных типов и присваивает каждой значение NULL.
Вывод: PHP-скрипт