Преобразование в Integer в PHP

Доброе время суток участники образовательной IT площадки GeekSpace. Меня зовут Юрий Сиротенко и в одном из предыдущих конспектов я рассказывал о таком типе данных как integer. В данном конспекте мы поговорим о преобразовании в целое число.

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

$x = (int) ‘1’; // int(1)
$x = (integer) ‘1’; // int(1)

Также значение может быть преобразовано в integer с помощью функции intval()

$x = intval(‘54’); // int(54)

Из Resource в Integer

Resource - это специальная переменная, содержащая ссылку на внешний ресурс. Ресурсы создаются и используются специальными функциями.

При преобразовании экземпляра класса Resource в целочисленный тип данных, результатом будет уникальный номер ресурса, привязанный к resource во время исполнения PHP программы

Давайте попробуем открыть некоторый файл при помощи функции fopen. Результатом ее применения будет указатель на файл. При преобразовании ресурса в целочисленный тип мы получим уникальный номер ресурса

$res = fopen('pam', 'r'); // resource(5) of type (stream)
$x = (int) $res; // int(5)

Тему ресурсов мы будем разбирать позднее

Из булевого типа в Integer

Преобразование из булева типа можно назвать элементарным - false преобразуется в 0, а true в 1

$x = (int) true; // int(1)
$x = (int) false; // int(0)

Из вещественного числа в integer

В общем случае при преобразовании из float в integer, число будет округлено в сторону нуля

$x = (int) 2.6; // int(2)

Из NaN в Integer

Про NaN мы поговорим в отдельной лекции, на настоящий момент нужно принять тот факт, что при попытке преобразования NaN в целое число в результате всегда будет ноль, но такой эффект происходит с версии PHP 7.0

$nan = 0 / 0; // float(NAN)
$x = (int) $nan; // int(0)

Из Infinite в Integer

Infinite - это слишком большое число, чтобы уместиться в тип float на данной платформе. Также как и в случае NaN, при преобразовании бесконечности в целое число в результате будет 0, но такой эффект происходит с версии PHP 7.0

$x = PHP_FLOAT_MAX * 2; // float(INF)
$x = (int) $x; // int(0)

Из NULL в Integer

В математике null (что означает “ноль” или “ни один”) - это присутствие нулевых значений в некотором множестве.

В PHP специальное значение NULL представляет собой переменную без значения.
Переменная считается null, если: ей была присвоена константа NULL, ей еще не было присвоено никакого значения или она была удалена с помощью функции unset()

Значение NULL всегда преобразуется в ноль

$x = (int) NULL; // int(0)

Из строк в Integer

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

$x = (int) '8 bit'; // int(8)
$x = (int) 'bit 8'; // int(0)

При попытке выполнить сложение, вычитание умножение и т.д. строк, они будут неявно приведены к целому числу

При попытке применить математические операторы к строкам которые начинаются с верного числового значения, произойдет ошибка уровня Notice, но выражение будет вычислено успешно

$x = ‘8 bit’ + ‘1 bit’;
var_dump($x);

PHP Notice: A non well formed numeric value encountered
int(9)

При попытке применить математические операторы к строкам которые не начинаются с числового значения, произойдет ошибка уровня Warning, но выражение будет выполнено успешно

$x = 'one bit' + 'two bit';
var_dump($x);

PHP Warning: A non-numeric value encountered
int(0)

Информация

Автор конспекта


Дата создания: 29.03.2019
Категория: PHP