Преобразование в 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)