PHP Учебник

PHP Старт Введение в PHP Установка PHP Синтаксис PHP Комментарии в PHP Переменные PHP PHP Echo / Print Типы данных PHP Строки PHP Числа PHP Математика в PHP Константы PHP Операторы PHP PHP If...Else...Elseif PHP Switch Циклы в PHP Функции PHP Массивы PHP PHP Суперглобальные PHP RegEx

PHP Формы

Обработка форм PHP Валидация форм PHP Обязательные поля Валидация URL/E-mail Полная форма PHP

PHP Продвинутый

PHP Дата и время PHP Include/Require PHP Работа с файлами Открытие/Чтение файлов Создание/Запись файлов PHP Загрузка файлов Файлы cookie PHP Сессии PHP Фильтры PHP Расширенные фильтры PHP Функция Callback PHP JSON PHP Исключения

PHP OOP

Что такое ООП в PHP Классы/Объекты PHP Цепочки методов PHP Конструктор PHP Деструктор PHP Модификаторы доступа Наследование в PHP Константы класса PHP Подсказка типов PHP Подсказка интерфейсов Абстрактные классы PHP PHP Интерфейсы PHP Полиформизм PHP Трейты Статические методы PHP Статические свойства PHP Пространства имен PHP Итерируемые объекты

База данных MySQL

База данных MySQL Подключение к MySQL Создание БД MySQL Создание таблицы MySQL Вставка данных MySQL Получить ID MySQL Подготовленные операторы PHP MySQL Получение данных MySQL Предложение WHERE Предложение ORDER BY Обновление данных MySQL Удаление данных БД MySQL Limit Data

PHP XML

Парсеры PHP XML Парсер PHP SimpleXML Получить PHP SimpleXML PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Введение AJAX PHP AJAX База Данных AJAX XML AJAX Живой поиск AJAX Опрос

PHP Примеры

PHP Примеры Практика ООП PHP PHP квиз-тест Упражнения Базовый PHP Упражнения Алгоритмы Упражнения Массивы Упражнения Цикл for Упражнения Функции Регулярные выражения Упражнения Дата PHP Упражнения Строки PHP Математика PHP Упражнения Формы PHP Упражнения Классы PHP Упражнения JSON PHP PHP Задачник


Различные типы чисел в PHP




Работая с числамт следует отметить, что PHP обеспечивает автоматическое преобразование типов данных. Например, если вы присвоите переменной целочисленное значение, тип этой переменной автоматически будет целым числом. На следующей строке кода вы можете назначить строку той же переменной и её тип изменится на строку. Это автоматическое преобразование иногда может нарушить ваш код.


Самый простой тип числа в PHP — это целое число. Как вы уже знаете, целое число — это число без десятичной части. Например, 7 представляет собой целое число, а также 10358 или -10358. С другой стороны, 10.0 и 5.58 — это числа с плавающей точкой.

Таким образом, целое число — это недесятичное число от -2147483648 до 2147483647. Значение больше (или меньше), чем этот целочисленный интервал, будет сохранено как float, потому что оно превышает предел целого числа.

Еще одна особенность чисел, которую нужно знать, это то, что даже если 4 * 2.5 равно 10, результат сохраняется как float, потому что один из операндов — float (2.5).

Основные правила определения целого числа:

  • должно содержать хотя бы одну цифру;
  • не должно иметь десятичной точки;
  • может быть положительным или отрицательным;
  • может быть указано в трех форматах: десятичном (основание 10), шестнадцатеричном (основание 16 — с префиксом 0x) или восьмеричном (основание 8 — с префиксом 0).

Функции PHP для проверки целочисленного типа переменной:

  • is_int() – проверяет, является ли значение целым числом
  • is_int() – псевдоним is_int()
  • is_int() – псевдоним is_int()

Проверим, является ли тип переменной целым числом:

<?php
$x = 7775;
var_dump(is_int($x)); // выведет bool(true)

$x = 77.85;
var_dump(is_int($x)); // выведет bool(false)
?>

Результат выполнения кода:

bool(true)
bool(false)

В отличие от целых чисел ряд типов float может быть представлен различными способами. Значения 4.54, 7.0, 3.87E+10 и 4.56E-5 — все это числа с плавающей точкой.

PHP автоматически преобразует число в тип float, когда используются десятичные или очень большие числа. Тип float обычно может хранить числа с величиной до 1.7976931348623E+308(зависит от платформы) и иметь максимальную точность 14 цифр.

В PHP есть следующие функции для проверки того, является ли переменная типом float:

  • is_float()
  • is_double() — псевдоним is_float()

Так как is_double() является просто псевдонимом is_float(), вы можете использовать любую из них и получить тот же результат:

<?php
$x = 10.365;
var_dump(is_float($x)); // выведет bool(true)

$x = 77.85;
var_dump(is_double($x)); // выведет bool(true)
?>

Результат выполнения кода:

bool(true)
bool(true)

В PHP любое числовое значение выше PHP_FLOAT_MAX на платформе считается бесконечным.

Вы можете проверить, является ли числовое значение конечным или бесконечным, используя функции is_finite() и is_infinite().

Функция PHP var_dump() возвращает тип данных и значение:

<?php
$x = 3.14e411;
var_dump($x); // выведет float(INF)
?>

Результат выполнения кода:

float(INF)

Некоторые функции при работе с числами могут возвращать специальное значение NAN. Значение NAN является сокращением от Not a Number (не число). Данное значение означает, что какая-то используемая математическая функция вышла за пределы допустимого диапазона значений в операциях с плавающей точкой или не смогла обработать свои входные данные. Например, log(-1) будет NAN. Аналогично, acos(5) также будет NAN. Вы можете проверить, не является ли значение, возвращаемое математической операцией, не числом, используя функцию is_nan().

Функция PHP var_dump() возвращает тип данных и значение:

<?php
$x = acos(5);
var_dump($x); // выведет float(NAN)
?>

Результат выполнения кода:

float(NAN)

Функцию is_numeric() можно использовать для определения, действительно ли строка или переменная является числовой или нет. Эта функция вернет true для чисел, записанных в восьмеричной, двоичной или шестнадцатеричной нотации. Она также вернет true, если числа записаны в экспоненциальном виде, например, +19.42e49.

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

<?php
$x = 3985;
var_dump(is_numeric($x));

$x = "3985";
var_dump(is_numeric($x));

$x = "39.85" + 100;
var_dump(is_numeric($x));

$x = 0xfedd24;
var_dump(is_numeric($x));

$x ="0xfedd24";
var_dump(is_numeric($x));

$x = "Привет мир";
var_dump(is_numeric($x));
?>

Результат выполнения кода:

bool(true) bool(true) bool(true) bool(true) bool(false) bool(false)

Как вы можете видеть, вся действительная числовая строка была преобразована в их соответствующие значения перед добавлением или другими операциями. Тип переменной $x в результате зависит от её конечного значения.

В предпоследнем случае шестнадцатеричная строка "0xfedd24" не преобразуется в ее десятичное значение потому, что PHP 7 не считает ее допустимой числовой строкой.

Примечание: Примечание: Начиная с PHP 7.0 функция is_numeric() возвращает значение FALSE для числовых строк в шестнадцатеричной форме (например, "0xfedd24"), поскольку они больше не считаются числовыми строками.


Иногда вам будет нужно преобразовать числовое значение в другой тип данных. В PHP имеется множество функций и методов для этих целей. В большинстве случаев приведение будет выполнено неявно и вам не придется беспокоиться об этом. Но, если вам нужно сделать преобразование, используйте методы, приведенные ниже.

Для преобразования любого значения в целое число вы можете использовать функции (int) или (integer). В случае float значения всегда будут округлены до нуля. Другой способ преобразовать строки и float в целые числа применить функцию intval(). Обе функции (int) и intval() работают одинаково.

<?php
// Привести float к int
$x = 77465.768;
$int_cast = (int)$x;
echo $int_cast; echo "<br>";

// Привести строку к int
$x = "77465.768";
$int_cast = (int)$x;
echo $int_cast;
?>

Результат выполнения кода:

77465
77465