Приведение типов в PHP
Приведение типов означает намеренное преобразование значения в другой тип данных, например числа с плавающей точкой в целое. Вместо того чтобы оставить решение за PHP, вы сами выбираете, какой тип получит переменная.
Синтаксис короткий: напишите нужный тип в круглых скобках прямо перед переменной или значением.
Вот операторы приведения типов:
(string)— даёт String(int)— даёт Integer(float)— даёт Float(bool)— даёт Boolean(array)— даёт Array(object)— даёт Object(unset)— устарел; даёт NULL
Приведение к строке
Поставьте (string) перед переменной или значением, чтобы превратить их в строку.
Пример приведения к строке
Пять значений разных типов становятся строками, и var_dump() подтверждает результат. Обратите внимание, что true превращается в «1», а NULL — в пустую строку:
Вывод: PHP-скрипт
<?php
$a = 5; // Целое число
$b = 5.34; // Число с плавающей точкой
$c = "hello"; // Строка
$d = true; // Логическое значение
$e = NULL; // NULL
$a = (string) $a;
$b = (string) $b;
$c = (string) $c;
$d = (string) $d;
$e = (string) $e;
// Используем var_dump() для проверки типа данных
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($e);
?>
Приведение к целому числу
Целое число получается, когда (int) стоит прямо перед переменной или значением.
Пример приведения к целому числу
Здесь значения нескольких типов приводятся к целому числу. Скрипт только выполняет преобразования, поэтому ничего не выводит:
Вывод: PHP-скрипт
<?php
$a = 5; // Целое число
$b = 5.34; // Число с плавающей точкой
$c = "25 km"; // Строка
$d = "km 25"; // Строка
$e = "hello"; // Строка
$f = true; // Логическое значение
$g = NULL; // NULL
$a = (int) $a;
$b = (int) $b;
$c = (int) $c;
$d = (int) $d;
$e = (int) $e;
$f = (int) $f;
$g = (int) $g;
?>
Приведение к числу с плавающей точкой
Чтобы получить число с плавающей точкой, напишите (float) перед переменной или значением.
Пример приведения к числу с плавающей точкой
Значения снова только преобразуются, на этот раз в числа с плавающей точкой, поэтому ничего не выводится:
Вывод: PHP-скрипт
<?php
$a = 5; // Целое число
$b = 5.34; // Число с плавающей точкой
$c = "25 km"; // Строка
$d = "km 25"; // Строка
$e = "hello"; // Строка
$f = true; // Логическое значение
$g = NULL; // NULL
$a = (float) $a;
$b = (float) $b;
$c = (float) $c;
$d = (float) $d;
$e = (float) $e;
$f = (float) $f;
$g = (float) $g;
?>
Приведение к логическому значению
Написав (bool) перед переменной или значением, вы получаете логическое значение.
Результат равен false для 0, NULL, false и всего пустого. Всё остальное становится true, в том числе отрицательные числа, такие как -1.
Пример приведения к логическому значению
Здесь девять значений приводятся к логическому типу. Только $c, $g и $i становятся false, хотя скрипт ничего не выводит:
Вывод: PHP-скрипт
<?php
$a = 5; // Целое число
$b = 5.34; // Число с плавающей точкой
$c = 0; // Целое число
$d = -1; // Целое число
$e = 0.1; // Число с плавающей точкой
$f = "hello"; // Строка
$g = ""; // Строка
$h = true; // Логическое значение
$i = NULL; // NULL
$a = (bool) $a;
$b = (bool) $b;
$c = (bool) $c;
$d = (bool) $d;
$e = (bool) $e;
$f = (bool) $f;
$g = (bool) $g;
$h = (bool) $h;
$i = (bool) $i;
?>
Приведение к массиву
Используйте (array) перед переменной или значением, чтобы получить массив.
Результат зависит от исходного значения. Большинство типов превращается в индексированный массив с одним элементом, а NULL — в пустой массив.
Объект становится ассоциативным массивом: каждое имя свойства превращается в ключ, а каждое значение свойства — в значение этого ключа.
Пример приведения к массиву
Каждое из этих значений становится массивом. Вывода нет, потому что скрипт их нигде не выводит:
Вывод: PHP-скрипт
<?php
$a = 5; // Целое число
$b = 5.34; // Число с плавающей точкой
$c = "hello"; // Строка
$d = true; // Логическое значение
$e = NULL; // NULL
$a = (array) $a;
$b = (array) $b;
$c = (array) $c;
$d = (array) $d;
$e = (array) $e;
?>
Преобразование объекта в массив
Здесь объект Car становится массивом, а var_dump() показывает два его свойства как ключи:
Вывод: PHP-скрипт
<?php
class Car {
public $color;
public $model;
public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
}
public function message() {
return "Моя машина — это " . $this->color . " " . $this->model . "!";
}
}
$myCar = new Car("red", "Volvo");
$myCar = (array) $myCar;
var_dump($myCar);
?>
Приведение к объекту
Используйте (object) перед переменной или значением, чтобы получить объект.
Большинство типов превращается в объект с единственным свойством «scalar», которое хранит исходное значение. NULL даёт пустой объект.
Массивы естественно отображаются на свойства. В индексированном массиве каждый номер индекса становится именем свойства, а в ассоциативном — каждый ключ. В обоих случаях значения массива становятся значениями свойств.
Пример приведения к объекту
Каждое из этих значений становится объектом. Скрипт ничего не выводит:
Вывод: PHP-скрипт
<?php
$a = 5; // Целое число
$b = 5.34; // Число с плавающей точкой
$c = "hello"; // Строка
$d = true; // Логическое значение
$e = NULL; // NULL
$a = (object) $a;
$b = (object) $b;
$c = (object) $c;
$d = (object) $d;
$e = (object) $e;
?>
Преобразование массивов в объекты
Один индексированный и один ассоциативный массив становятся объектами. Вывода снова нет:
Вывод: PHP-скрипт
<?php
$a = array("Volvo", "BMW", "Toyota"); // индексный массив
$b = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); // ассоциативный массив
$a = (object) $a;
$b = (object) $b;
?>
Приведение к NULL
Примечание: В PHP 7.2.0 приведение (unset) было объявлено устаревшим, а в PHP 8.0.0 удалено.
Чтобы получить NULL сегодня, просто присвойте NULL переменной:
Пример приведения к NULL
Какой бы тип ни был у каждой переменной раньше, после этого присваивания она равна NULL. Ничего не выводится:
Вывод: PHP-скрипт
<?php
$a = 5; // Целое число
$b = 5.34; // Число с плавающей точкой
$c = "hello"; // Строка
$d = true; // Логическое значение
$e = NULL; // NULL
$a = NULL;
$b = NULL;
$c = NULL;
$d = NULL;
$e = NULL;
?>