В PHP есть несколько встроенных функций, которые помогут вам выполнить практически любую математическую операцию. Основные математические операции мы рассмотрели в Руководстве по операторам в PHP. Давайте посмотрим еще на один пример:
<?php
echo 7 + 3; // Вывод: 10
echo 7 - 2; // Вывод: 5
echo 7 * 2; // Вывод: 14
echo 7 / 2; // Вывод: 3.5
echo 7 % 2; // Вывод: 1
?>
Каждая математическая операция имеет определенный уровень приоритета; обычно умножение и деление выполняются перед сложением и вычитанием. Однако скобки могут изменить этот приоритет; выражения, заключенные в круглые скобки, всегда считаются первыми, независимо от уровня приоритета операции, как показано в следующем примере:
<?php
echo 5 + 4 * 10; // Вывод: 45
echo (5 + 4) * 10; // Вывод: 90
echo 5 + 4 * 10 / 2; // Вывод: 25
echo 8 * 10 / 4 - 2; // Вывод: 18
echo 8 * 10 / (4 - 2); // Вывод: 40
echo 8 + 10 / 4 - 2; // Вывод: 8.5
echo (8 + 10) / (4 - 2); // Вывод: 9
?>
В следующем разделе мы рассмотрим некоторые встроенные PHP-функции, которые наиболее часто используются при выполнении математических операций.
Поиск абсолютного значения числа
Абсолютное значение целого числа или числа с плавающей запятой можно найти с помощью функции abs()
, как показано в следующем примере:
<?php
echo abs(5); // Вывод: 5 (integer)
echo abs(-5); // Вывод: 5 (integer)
echo abs(4.2); // Вывод: 4.2 (double/float)
echo abs(-4.2); // Вывод: 4.2 (double/float)
?>
Как вы можете видеть, если заданное число отрицательное, возвращаемое значение положительное. Но, если число положительное, эта функция просто возвращает число.
Округление дробного значения в большую или меньшую сторону
Функцию ceil()
можно использовать для округления дробного значения до следующего наибольшего целочисленного значения, тогда как функцию floor()
можно использовать для округления дробного значения до следующего наименьшего целочисленного значения, как показано в следующем примере:
<?php
// Округление дроби вверх
echo ceil(4.2); // Вывод: 5
echo ceil(9.99); // Вывод: 10
echo ceil(-5.18); // Вывод: -5
// Округление дроби вниз
echo floor(4.2); // Вывод: 4
echo floor(9.99); // Вывод: 9
echo floor(-5.18); // Вывод: -6
?>
Вычисление квадратного корня числа
Вы можете использовать функцию sqrt()
, чтобы найти квадратный корень из положительного числа. Эта функция возвращает специальное значение NAN
для отрицательных чисел. Вот пример:
<?php
echo sqrt(9); // Вывод: 3
echo sqrt(25); // Вывод: 5
echo sqrt(10); // Вывод: 3.1622776601684
echo sqrt(-16); // Вывод: NAN
?>
Генерация случайного числа
Функцию rand()
можно использовать для генерации случайного числа. При желании вы можете указать диапазон, передав аргументы min
, max
, как показано в следующем примере:
<?php
// Сгенерируем случайные числа
echo rand() . "<br>";
echo rand() . "<br>";
// Генерация случайных чисел от 1 до 10 (включительно)
echo rand(1, 10) . "<br>";
echo rand(1, 10) . "<br>";
?>
Если функция rand()
вызывается без необязательных аргументов min
, max
, она возвращает псевдослучайное число от 0
и getrandmax()
. Функция getrandmax()
показывает максимально возможное случайное значение, которое на платформе Windows составляет всего 32767. Итак, если вам требуется диапазон больше 32767, вы можете просто указать аргументы min
и max
.
Преобразование десятичных чисел в двоичные и наоборот
Функция decbin()
используется для преобразования десятичного числа в двоичное. В то время как ее аналог функция bindec()
преобразует число из двоичного в десятичное.
<?php
// Преобразование десятичных чисел в двоичные
echo decbin(2); // Вывод: 10
echo decbin(12); // Вывод: 1100
echo decbin(100); // Вывод: 1100100
// Преобразование двоичных чисел в десятичные
echo bindec(10); // Вывод: 2
echo bindec(1100); // Вывод: 12
echo bindec(1100100); // Вывод: 100
?>
Преобразование десятичных чисел в шестнадцатеричные и наоборот
Функция dechex()
используется для преобразования десятичного числа в шестнадцатеричное. В то время как функция hexdec()
используется для преобразования шестнадцатеричной строки в десятичное число.
<?php
// Преобразование десятичного числа в шестнадцатеричное
echo dechex(255); // Вывод: ff
echo dechex(196); // Вывод: c4
echo dechex(0); // Вывод: 0
// Преобразование шестнадцатеричного числа в десятичное
echo hexdec('ff'); // Вывод: 255
echo hexdec('c4'); // Вывод: 196
echo hexdec(0); // Вывод: 0
?>
Преобразование десятичных чисел в восьмеричные и наоборот
Функция decoct()
используется для преобразования десятичного числа в восьмеричное, в то время как функция octdec()
используется для преобразования восьмеричного числа в десятичное.
<?php
// Преобразование десятичного числа в восьмеричное
echo decoct(12); // Вывод: 14
echo decoct(256); // Вывод: 400
echo decoct(77); // Вывод: 115
// Преобразовать восьмеричного числа в десятичное
echo octdec('14'); // Вывод: 12
echo octdec('400'); // Вывод: 256
echo octdec('115'); // Вывод: 77
?>
Преобразование числа из одной базовой системы в другую
Функцию base_convert()
можно использовать для преобразования числа из одной базовой системы в другую. Например, вы можете преобразовать десятичное (основание 10) в двоичное (основание 2), шестнадцатеричное (основание 16) в восьмеричное (основание 8), восьмеричное в шестнадцатеричное, шестнадцатеричное в десятичное и т. д.
Эта функция принимает три параметра: число, которое нужно преобразовать, основание, в котором оно находится, и основание, в которое оно должно быть преобразовано. Базовый синтаксис следующий:
base_convert(number, frombase, tobase);
Здесь число может быть целым числом или строкой, представляющей целое число. Оба параметра frombase
и tobase
должны быть от 2 до 36 включительно. Цифры в числах с основанием больше 10 будут представлены буквами a-z, где a означает 10, b означает 11, а z означает 35. Вот простой пример, показывающий, как работает эта функция:
<?php
// Преобразование десятичного числа в двоичное
echo base_convert('12', 10, 2); // Вывод: 1100
// Преобразовать двоичного числа в десятичное
echo base_convert('1100', 2, 10); // Вывод: 12
// Преобразование десятичного числа в шестнадцатеричное
echo base_convert('10889592', 10, 16); // Вывод: a62978
// Преобразование шестнадцатеричного числа в десятичное
echo base_convert('a62978', 16, 10); // Вывод: 10889592
// Преобразование десятичного числа в восьмеричное
echo base_convert('82', 10, 8); // Вывод: 122
// Преобразовать восьмеричного числа в десятичное
echo base_convert('122', 8, 10); // Вывод: 82
// Преобразование шестнадцатеричного числа в восьмеричное
echo base_convert('c2c6a8', 16, 8); // Вывод: 60543250
// Преобразование восьмеричного числа в шестнадцатеричное
echo base_convert('60543250', 8, 16); // Вывод: c2c6a8
// Преобразование восьмеричного числа в двоичное
echo base_convert('42', 8, 2); // Вывод: 100010
// Преобразование двоичного числа в восьмеричное
echo base_convert('100010', 2, 8); // Вывод: 42
// Преобразование шестнадцатеричного числа в двоичное
echo base_convert('abc', 16, 2); // Вывод: 101010111100
// Преобразование двоичного числа в шестнадцатеричное
echo base_convert('101010111100', 2, 16); // Вывод: abc
?>
Функция base_convert()
всегда возвращает строковое значение. Если возвращаемое значение имеет основание 10, результирующая строка может использоваться как числовая строка в вычислениях, и PHP преобразует ее в число при выполнении вычисления.