создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Урок 5. Математические функции в PHP

Содержание

Теория

Методы и функции: abs, sqrt, pow, round, ceil, floor, min, max, rand, mt_rand

Функция abs

Функция abs вычисляет модуль числа (т.е. из отрицательного делает положительное).

Синтаксис: abs(число).

Пример. Функция вычислит модуль от числа -15:

<?echo abs(-15)?>

Результат: 15.

Функция sqrt

Функция sqrt находит квадратный корень числа.

Синтаксис: sqrt(число).

Пример. Функция вычислит квадратный корень 16:

<?echo sqrt(16)?>

Результат: 4.

Пример. Функция вычислит квадратный корень 5:

<?echo sqrt(5)?>

Результат: 2.2360679774998.

Функция pow

Функция pow возводит число в заданную степень.

Синтаксис: pow(число,степень).

Пример. Функция возведет число 2 в степень 3:

<?echo pow(2,3)?>

Результат: 8.

Функция round

Функция round округляет число по правилам математического округления.

Синтаксис: round(число,[сколько знаков оставить в дробной части]).

2-й необязательный параметр может быть как положительным, так и отрицательным (в этом случае он указывает сколько знаков оставить в целой части).

Пример. Округлить дробь до целого:

<?echo round(3.4)?>

Результат: 3.

Пример. Округлить дробь до целого:

<?echo round(3.5)?>

Результат: 4.

Пример. Округлить дробь до целого:

<?echo round(3.6)?>

Результат: 4.

Пример. В данном примере функция округлит число до 2 знаков в дробной части:

<?echo round(12.45678,2)?>

Результат:12.46.

Пример. В данном примере функция округлит число до 3 знаков в дробной части:

<?echo round(12.45678,3)?>

Результат: 12.457.

Функция ceil

Функция ceil округляет дробь в большую сторону до целого.

Это значит, что независимо от цифры в начале дробной части, дробь все-равно округлится с увеличением целой части на 1.

К примеру, 12.1 округлится к 13.

Синтаксис: ceil(число).

Пример. Функция округлит 5.1 в большую сторону и вернет 6:

<?echo ceil(5.1)?>

Результат: 6.

Функция floor

Функция floor округляет дробь в меньшую сторону.

Это значит, что независимо от цифры в начале дробной части, дробь все-равно округлится без увеличения целой части на 1.

К примеру, 12.9 округлится к 12.

Синтаксис: floor(число).

Пример. Функция округлит 4.9 в меньшую сторону и вернет 4:

<?echo floor(4.9)?>

Результат: 4.

Функция min

Функция min находит самое маленькое число из переданных ей параметрами или самое маленькое число среди элементов массива.

Синтаксис: min(1 число,2 число…); min([массив чисел]).

Пример. Функция вернет наименьшее среди заданных чисел:

<?echo min(1,2,3)?>

Результат: 1.

Пример. Функция вернет наименьшее значение массива:

<?echo min([1,2,3])?>

Результат: 1.

Функция max

Функция max находит самое большое число из переданных ей параметрами или самое большое число среди элементов массива.

Синтаксис: max(1 число,2 число…); max([массив чисел]).

Пример. Функция вернет наибольшее среди заданных чисел:

<?echo max(1,2,3)?>

Результат: 3.

Пример. Функция вернет наибольшее значение массива:

<?echo max([1,2,3])?>

Результат: 3.

Функция rand и mt_rand

Функция rand и mt_rand генерирует случайное целое число в заданном промежутке.

Вам также может пригодиться функция mt_getrandmax, которая возвращает наибольшее возможное случайное значение числа.

Синтаксис: rand и mt_rand(с какого числа,до какого числа).

Пример. Функция сгерерирует случайное число от 5 до 9 (при обновлении страницы число каждый раз будет разным):

<?echo rand(1,4)?>

Результат: 2.

<?echo mt_rand(5,9)?>

Результат: 7.

Практика

Примеры решения задач

Округление и ассоциативный массив

Задача. Найдите корень из числа 1000. Округлите его в большую и меньшую стороны. В массив $arr запишите 1-м элементом корень из числа, 2-м элементом - округление в меньшую сторону, 3-м элементом - в большую.

Решение: корень из числа найдем функцией sqrt. Далее, чтобы округлить число в меньшую строну, воспользуемся функцией floor, а чтобы в большую - функцией ceil:

<?$sqrt=sqrt(1000);//Найдем корень и запишем его в $sqrt

echo floor($sqrt);//Округлим в меньшую сторону

echo ceil($sqrt)//Округлим в большую сторону

?>

Теперь результаты необходимо записать в массив. Сделать это можно 2 способами: объявить через [], либо просто воспользоваться присваиванием $arr[]='htm';$arr[]='php' и так далее.

1 способ:

<?$sqrt=sqrt(1000)

$arr=[$sqrt,floor($sqrt),ceil($sqrt)]?>

2 способ:

<?

$sqrt=sqrt(1000)

$arr[]=$sqrt;$arr[]=floor($sqrt);$arr[]=ceil($sqrt)?>

Массив случайных чисел

Задача. Заполните массив 30-ю случайными числами от 1 до 10.

Решение: для решения воспользуемся циклом for - прокрутим его 30 раз, записывая при каждом проходе случайное число в новый элемент массива.

Случайные числа будем получать через функцию mt_rand.

Чтобы число записалось в новый элемент массива, следует сделать так: $arr[]=1;$arr[]=2; - 1-е число запишется в 0-й элемент массива, а 2-е - в 1-й (с ключом 1). В случае со случайными числами это будет выглядеть так:

<?//Каждое из чисел будет записываться в новый элемент массива:

$arr[]=mt_rand(1,10);$arr[]=mt_rand(1,10);$arr[]=mt_rand(1,10)?>

Напоминаю о том, что ключи можно не оставлять пустыми, а делать своими:

<?//Используем свои ключи, а не автоматические:

$arr['1 ключ']=mt_rand(1,10);$arr['2 ключ']=mt_rand(1,10);$arr['3 ключ']=mt_rand(1,10)?>

При большом желании мы можем вручную сделать 30 таких строчек - и задача решена. Но пусть лучше за нас это сделает цикл:

<?//Переменная $i нужна, чтобы цикл сделал 30 итераций (проходов)

for($i=1;$i<=30;$i++){$arr[]=mt_rand(1,10);}

var_dump($arr)

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

?>

array(30) { [0]=> int(10) [1]=> int(9) [2]=> int(5) [3]=> int(3) [4]=> int(3) [5]=> int(10) [6]=> int(4) [7]=> int(10) [8]=> int(2) [9]=> int(2) [10]=> int(6) [11]=> int(6) [12]=> int(4) [13]=> int(2) [14]=> int(7) [15]=> int(7) [16]=> int(2) [17]=> int(4) [18]=> int(10) [19]=> int(9) [20]=> int(3) [21]=> int(4) [22]=> int(1) [23]=> int(9) [24]=> int(9) [25]=> int(8) [26]=> int(5) [27]=> int(4) [28]=> int(6) [29]=> int(5) }

Задачи для решения

Работа с %

Даны переменные $a=10 и $b=3. Найдите остаток от деления $a на $b.

0.33333333333333

Даны переменные $a и $b. Проверьте, что $a делится без остатка на $b. Если это так - выведите 'Делится без остатка' и результат деления, иначе выведите 'Делится с остатком' и остаток от деления.

a=10, b=5

Делится без остатка. Результат = 2

a=10, b=9

Делится с остатком 0.11111111111111

Работа со степенью и корнем

Для решения задач данного блока вам понадобятся следующие функции: sqrt, pow.

Возведите 2 в 10 степень. Результат запишите в переменную $s.

1024

Найдите квадратный корень из предыдущей переменной $s.

32

Найдите квадратный корень из 245.

15.652475842499

Дан массив с элементами [4,2,5,19,13,0,10]. Найдите корень из суммы квадратов его элементов. Для решения воспользуйтесь циклом foreach.

№ элементаЭлементЭлемент в квадратеЭлемент в квадрате нарастающим итогом
141616
22420
352545
419361406
513169575
600575
710100675

Сумма квадратов = 675

Корень из суммы квадратов = 25.980762113533

Работа с функциями округления

Для решения задач данного блока вам понадобятся следующие функции: round, ceil, floor.

Найдите квадратный корень из 379. Результат округлите до целых, до десятых, до сотых.

Найдите квадратный корень из 587. Округлите результат в большую и меньшую сторону, запишите результаты округления в ассоциативный массив с ключами 'floor' и 'ceil'.

Работа с min и max

Для решения задач данного блока вам понадобятся следующие функции: min, max.

Даны числа [4,-2,5,19,-130,0,10]. Найдите минимальное и максимальное число.

Работа с рандомом

Для решения задач данного блока вам понадобятся следующие функции: mt_rand.

Выведите на экран случайное число от 1 до 100.

Заполните массив 10-ю случайными числами. Подсказка: нужно воспользоваться циклами for или while. Показать решение.

Работа с модулем

Для решения задач данного блока вам понадобятся следующие функции: abs.

Даны переменные $a и $b. Найдите найдите модуль разности $a и $b. Проверьте работу скрипта самостоятельно для различных $a и $b.

Дан массив в числами, к примеру [1,2,-1,-2,3,-3]. Создайте из него новый массив так, чтобы отрицательные числа стали положительными, то есть у нас должен получиться такой массив: [1,2,1,2,3,3].

Задачи

Дано число, например 30. У этого числа есть делители (числа, на которое оно делится без остатка). Делители числа 30: 1, 2, 3, 5, 6, 10, 15, 30. Задача сделать массив делителей числа 30 (число может быть любым, не обязательно 30).

Дан массив [1,2,3,4,5,6,7,8,9,10]. Узнайте, сколько 1-х элементов массива нужно сложить, чтобы сумма получилась больше 10.

Содержание

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting