В избранное    Домой   

Вторник,  23 Apr 2024 г., 12:58
Лучше кусок сухого хлеба, и с ним мир, нежели дом, полный заколотого скота, с раздором. /Притчи/

 Логин:  

 Пароль: 




Анонсы:
=== Дата: 18/07/2011     Автор: Крис Ньюман ===

PHP. Урок 5 Работа с числами

Урок 5. Работа с числами

В этом уроке вы узнаете, какие операции с числами можно выполнять в PHP.

Арифметика

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

Арифметические операции

Операция суммирования выполняется с помощью символа плюс (+). В этом примере вычисляется сумма 6 и 12, а результат выводится на экран:

echo 6 + 12;

Операция вычитания выполняется с помощью знака минус (-). Иногда он используется как дефис. В следующем примере из 24 вычитается 5:

echo 24 — 5;

В некоторых случаях знак минус используется для того, чтобы сделать число отрицательным (например, -20).

Чтобы перемножить два числа, используется символ звездочка (*). В следующем примере перемножаются 4 и 9:

echo 4 * 9;

Деление выполняется с помощью косой черты (/). В примере ниже 48 делится на 12:

echo 48 / 12;

Деление. Если два целых числа делятся без остатка, на выходе получим целое. Иначе будет double. Дробный результат не округляется до целого.

Чтобы найти остаток от деления, используется символ процента (%). В примере ниже на выходе получим 3 — остаток от деления 21 на 6:

echo 21 % 6;

Остаток от деления. Оператор остатка от деления можно использовать для того, чтобы определить четность числа с помощью операции $number % 2. Ноль (0) получим для всех четных и единицу для всех нечетных (потому что любое нечетное число пр делении на 2 дает остаток 1).

Операторы инкремента и декремента

Чтобы увеличить или уменьшить число на единицу, нужно использовать, соответственно, оператор инкремента — два плюса (++) или оператор декремента — два минуса (–). В следующем примере оба выражения прибавляют единицу к переменной $number:

$number++; ++$number;

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

В выражении ниже единица вычитается из $countdown до вывода результата на экран:

echo --$countdown;

В следующем примере, наоборот, вывод на экран опережает операцию декремента:

echo $countdown--;

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

for ($count; $count<=10; $count++) {
    echo "Счетчик = $count<br>"; }

В данном случае при каждом повторении цикла выводится содержимое переменной $count.

Комбинированные операторы

Комбинированные операторы позволяют сократить код, когда арифметическая операция выполняется над существующей переменной. В следующем примере используется комбинированное суммирование для того, чтобы увеличить на шесть значение переменной $count:

$count +=6;

Эта операция заменяет такую последовательность: взять начальное значение переменной $count, прибавить к нему шесть, и результат присвоить $count. Поэтому комбинированный оператор эквивалентен следующему коду:

$count = $count + 6;

Все основные арифметические операции имеют соответствующие комбинированные операторы и перечислены в табл. 5.1.

Таблица 5.1. Комбинированные операторы

Оператор Эквивалент
$a += $b $a = $a + $b
$a -= $b $a = $a - $b
$a *= $b $a = $a * $b
$a /= $b $a = $a / $b
$a %= $b $a = $a % $b

Приоритет операторов

Правила приоритетности операторов определяют порядок вычислений. Вот пример неоднозначного выражение:

echo 3 * 4 + 5;

Непонятно, то ли 3 умножается на 4 и потом к результату прибавляется 5, что дает 17; то ли суммируются 4 и 5, а потом результат умножается на 3, что дает 27. Если запустить сценарий, в результате получим 17.

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

Если нужно выполнить суммирование раньше, можно использовать круглые скобки:

echo 3 * (4 + 5);

В этом случае получим 27.

Порядок выполнения арифметических операций отвечает порядку, известному со школьной скамьи: скобки, экспонента, умножение/деление и суммирование/вычитание.

Числовые типы данных

Выше было показано, что PHP устанавливает тип данных каждому значению. Поэтому для чисел тип данных будет целый или с плавающей точкой.

Чтобы узнать, какой тип установлен для числа, можно использовать функцию is_float или is_int. Аналогично, функция is_numeric позволяет узнать, является ли значение произвольным числом.

В следующем примере проверяется, принадлежит ли значение переменной $number к целому числу:

$number = "28";
if (is_int($number)) {
    echo "$number целое";
}
else {
    echo "$number не целое";
}

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

Хотя и переменная $number в предыдущем примере — строка, PHP достаточно гибок, чтобы использовать это значение в числовых операциях. В следующем примере показано, как инкрементируется строка, содержащая число, и в результате получается целое:

$number = "6";
$number++;
echo "$number имеет тип " . gettype($number);

Что такое NULL?

Значение NULL — это тип данных и одновременно значение, которое указывает на отсутствия значения. Оно не имеет числового значения, но в операциях сравнения соответствует нулю:

$number = 0;
$empty = NULL;
if ($number == $empty) {
    echo "Значения эквивалентны";
}

Сравнение типов. Чтобы убедиться в том, что оба значения и их типа совпадают, нужно использовать оператор сравнения тройное равенство (===).

Функции для работы с числами

Рассмотрим функции для работы с числами в PHP.

Округление чисел

В PHP есть три функции для того, чтобы округлить десятичное число до целого.

Функция ceil или floor округляют число, соответственно, вверх или вниз до ближайшего целого. Например, ceil(1.3) возвращает 2, а flor(6.8) возвращает 6.

Округление отрицательных чисел. Нужно помнить, как округляются отрицательные числа. В результате операции floor(-1.1) получим -2 как следующее меньшее целое число, а не -1. Аналогично, в результате ceil(-2.5) получим -2.

Чтобы округлить до ближайшего целого, используется функция round. Дробная часть меньше 0.5 округляется вниз, а 0.5 и выше округляется вверх. Например, round(1.3) возвращает 1, round(1.5) возвращает 2.

Функции round можно передать необязательный параметр точности. В примере ниже значение округляется до двух цифр после запятой:

$score = 0.535; echo round($score, 2);

На выходе получим 0.54. Из-за третьей после точки цифры 5 округление дает большее число, чем изначальное.

Кроме того, функция round с отрицательной точностью округляет целое до определенной цифры, как в примере ниже:

$distance = 2834; echo round($distance, -2);

Сравнение

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

Выражение ниже выводит большую из переменных $a и $b:

echo max($a, $b);

Нет ограничения на количество сравниваемых значений. В примере ниже из большого списка значений выбирается минимальное:

echo min(6, 10, 23, 3, 88, 102, 5, 44);

На выходе получим 3.

Случайные числа

Функция rand используется для генерации случайного числа с помощью встроенного генератора случайных чисел. На вход функции rand можно передать два необязательных аргумента, которые задают диапазон, в котором нужно генерировать случайные числа.

Генерация случайного. Константа RAND_MAX содержит значение наибольшего случайного числа, которое можно сгенерировать с помощью используемой системы. Это значение может отличаться для различных платформ.

В следующем выражении генерируется случайное число от одного до десяти и выводится на экран:

echo rand(1, 10);

Можно вставить строку в сценарий и запускать его несколько раз. Тогда значение на экране изменяется каждый раз при запуске.

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

Алгоритмы случайных чисел. В PHP есть другой генератор случайных чисел — Марсена-Твистера (Mersenne-Twister), который генерирует более качественную последовательность случайных чисел, чем rand. Этот алгоритм реализован в функциях mt_rand и mt_srand.

Математические функции

В PHP есть много математических функций. Это и тригонометрия, и логарифмы, и перевод числа из одной системы счисления в другую. Обычно такие функции не применяются для написания Web-сценариев. Поэтому они не будут здесь рассматриваться.

Резюме

В этом уроке вы узнали о том, как работать с числами. В слдующем уроке вы узнаете все о работе со строками в PHP.


<<назад

Погода в Рудне
(Волгоградcкая обл.)

Подробнее >>


Курс валют
на 23 Апр 2024 г.
704 - Вьетнамских донгов
- 1