Приведение типов (скалярные типы) онлайн урок.


Приведение типа (Type Casting) - это процесс изменения типа данных переменной с одного на другой. Приведение типа может осуществляться явно и неявно.

Явно тип приводится при помощи написания желаемого типа перед переменной в скобках. Например, если $a - это переменная с числовым значением, то (bool)$a будет иметь значение, приведенное к логическому типу. Неявно тип приводится, когда мы стараемся совместить в выражении разные типы данных - например, при сложении строки и числа.

В этом уроке мы рассмотрим основные правила приведения скалярных (простых) типов bool, int, float, string, а также NULL.

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

$a = 0;
$b = -15;
$c = 23.5;

​// false, true, true
var_dump( (bool)$a, (bool)$b, (bool)$c );


Строковые значения приводятся к логическим следующим образом: результатом будет false, если исходное значение было пустой строкой или строкой, которая состоит из символа ноль '0'. В остальных случаях результатом будет true.

$a = 'hello';
$b = '0';
$c = '';

​// true, false, false
var_dump( (bool)$a, (bool)$b, (bool)$c );


Приведение к числовым типам. Приведение логических значений к числовым осуществляется следующим образом: если исходное значение было true- результатом будет 1, иначе - 0. Если мы хотим привести значение от одного числового типа к другому, то при приведении от float к int дробная часть будет отброшена, а наоборот - она будет нулевой.

При приведении строк к числам используется следующее правило: если строка содержит число (соответствующего типа и возможно со знаком +/-) и перед ним нету символов - не цифр - (кроме пробелов), то это число станет результатом приведения (с соответствующим знаком). Иначе результатом будет 0.

$a = false;
$b = 3.654;
$c = '-2 items';
$d = ' 0.5kg';
$e = 'Added 10 points ';

// 0, 3, -2, 0.5, 0
var_dump( (int)$a, (int)$b, (int)$c, (float)$d, (float)$e );


Приведение к строкам. При приведение логических значений к строке результатом будет '1' если исходное значение было true, иначе результатом будет пустая строка. Результатом приведения любых числовых значений к строковым результатом будет строка, содержащая саму запись числа.



Отметим, что конструкция не изменяет тип самой переменной $var. Эта запись сама по себе лишь представляет тип, который записан в скобках.

Для того, чтобы изменить тип самой переменной, используется функция settype()

$a = '432'; // string
$c = 123; // integer(number)

settype( $a, 'integer');
settype( $c, 'string' );


Этот подход приведения типов означает, что тип переменной будет изменен до конца скрипта либо до следующего применения settype() относительно ее.

Замечание. В случае изменения типа с float на integer следует быть осторожными, поскольку вся дробная часть будет отброшена. Это не следует путать с округлением.

Замечание. Приведение значений null к остальным скалярным (простым) типам происходит следующим образом

  • (bool) null - false

  • (int) null - 0

  • (float) null - 0

  • (string) null - пустая строка ''