Обработка чисел и математические операции

Данная тема является важной, поскольку практически во всех приложениях есть какие-то вычислительные операции. Операции над числами представлены в таблице ниже.

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

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

\$num2 = ". $num2; //Пример суммирования: echo "
\$num1 + \$num2 = ". ($num1 + $num2); //Пример вычитания: echo "
\$num1 - \$num2 = ". ($num1 - $num2); //Пример умножения: echo "
\$num1 * \$num2 = ". $num1 * $num2; //Пример деления: echo "
\$num1: \$num2 = ". $num1 / $num2; //Пример остатка от деления: echo "
\$num1 % \$num2 = ". $num1 % $num2; //Пример инкрементирования в префиксной форме: echo "
++\$num1 = ". ++$num1; //Сейчас $num1 = 11 $num1=10; //присвоили первоначальное значение //Пример инкрементирования в пост префиксной форме: echo "
\$num1++ = ". $num1++; //Сейчас $num1 = 11 $num1=10; //присвоили первоначальное значение //Пример декрементирования в префиксной форме: echo "
--\$num1 = ". --$num1; $num1=10; //Пример декрементирования в постпрефиксной форме: echo "
\$num1-- = ". $num1--; ?>

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

$num1 = 10
$num2 = 7
$num1 + $num2 = 17
$num1 - $num2 = 3
$num1 * $num2 = 70
$num1: $num2 = 1.42857142857
$num1 % $num2 = 3
++$num1 = 11
$num1++ = 10
--$num1 = 9
$num1-- = 10

Разница между префиксной и постпрефиксной формой:

  • в префиксной форме (++ стоит перед переменной) сначала происходит увеличение на единицу, а потом выводится результат
  • в постпрефиксной форме (++ стоит после переменной) сначала выводится результат, а потом уже осуществляется инкрементирование

Для такого, чтобы Вы лучше поняли разницу, приведу классический пример, который приводится во многих учебниках программирования:

//Присваиваем переменным значения: $num1 = 10; $num2 = 7; $rez = ++$num1 + $num2; // результат будет 18 echo "
\$rez = ". $rez; //Присваиваем $num1 первоначальное значение: $num1 = 10; $rez = $num1++ + $num2; // результат будет 17 echo "
\$rez = ". $rez; //Операции ++ и -- можно применять также и к строкам $str = "abc"; echo "
". ++$str; // результат будет строка "abd" ?>

Стоит отметить, что при сложение переменных можно использовать два вида записей:

  • $num1 = $num1 + $num2 - обычная запись;
  • $num1 += $num2 - сокращенная запись. Результат этих операций будет одинаковый. Сокращенные записи можно также применять с вычитаниями и с умножениями.

Операторы сравнения в php

Операторы сравнения используются в проверках условий if и т.п. Однако в этом уроке мы не будем рассматривать условные операторы, а рассмотрим лишь операторы сравнения. Все операторы сравнения приведены в таблице ниже:

Здесь ничего сложного нету, принцип тот же что и в математике. Единственная особенность в том, что true (истина) это 1, а false (ложь) это 0. Приведем подробный пример на PHP:

//Присваиваем переменным значения: $num1 = 10; $num2 = 7; echo "\$num1 > \$num2 = ". ($num1 > $num2); //получим 1 (10 > 7 - верно) echo "\$num1 //получим 0 (10 //Можно писать проще: echo "
10 // 0 echo "
20 // 0 echo "
1 == 1 = ". (1 == 1); // 1 echo "
0 == \"\" = ". (0 == ""); // 1 echo "
0 === 0 = ". (0 === 0); // 1 echo "
0 === \"\" = ". (0 === ""); // 0 echo "
true = ". true; // 1 echo "
false = ". false; // 0 ?>

Обратите внимание :

  • В случае false, 0 не будет выводится
  • оператор эквивалентности возвращает 1 только в том случае, когда есть точное соответствие. Например, 0 == "" верно, а 0 === "" уже не верно, поскольку нету точного совпадения.

Операции с переменными PHP (операторы)

Для осуществления существуют различные группы.

Оператором называется нечто, состоящее из одного или более значений (выражений , если говорить на жаргоне программирования), которое можно вычислить как новое значение (таким образом, вся конструкция может рассматриваться как выражение). Отсюда следует, что функции или любые другие конструкции, которые возвращают значение (например, print() ) являются операторами, в отличие от всех остальных языковых конструкций (например, echo() ), которые ничего не возвращают.

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

Помните школьные основы арифметики? Описанные ниже операторы работают так же.

Операция деления ("/") всегда возвращает вещественный тип, даже если оба значения были целочисленными (или строками, которые преобразуются в целые числа). В противном случае результат будет дробным.

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

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

Операции инкремента и декремента

PHP, аналогично C, поддерживает префиксные и постфиксные операторы инкремента и декремента.

Постфиксные операторы инкремента и декремента

Как и в языке Си, эти операторы увеличивают или уменьшают значение переменной, а в выражении возвращают значение переменной $a до изменения. Например:

$a=10;
$b=$a++;
echo "a=$a, b=$b"; // Выводит a=11, b=10

Как видите, сначала переменной $b присвоилось значение переменной $a , а уж затем последняя была инкрементирована. Впрочем, выражение, значение которого присваивается переменной $b , может быть и сложнее - в любом случае, инкремент $a произойдет только после его вычисления.

Префиксные операторы инкремента и декремента

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

$a=10;
$b=--$a;
echo "a=$a, b=$b"; // Выводит a=9, b=9

Операции инкремента и декремента на практике применяются очень часто. Например, они встречаются практически в любом цикле for .

echo "

Постфиксный инкремент

" ;
$a = 5 ;
echo "Должно быть 5: " . $a ++ . "
\n" ;

\n" ;

Echo "

Префиксный инкремент

" ;
$a = 5 ;
echo "Должно быть 6: " . ++ $a . "
\n" ;
echo "Должно быть 6: " . $a . "
\n" ;

Echo "

Постфиксный декремент

" ;
$a = 5 ;
echo "Должно быть 5: " . $a -- . "
\n" ;

\n" ;

Echo "

Префиксный декремент

" ;
$a = 5 ;
echo "Должно быть 4: " . -- $a . "
\n" ;
echo "Должно быть 4: " . $a . "
\n" ;
?>

Строковые операции

В PHP есть два оператора для работы со строками. Первый - оператор конкатенации ("."), который возвращает объединение левого и правого аргумента. Второй - оператор присвоения с конкатенацией, который присоединяет правый аргумент к левому. Приведем конкретный пример:

$a = "Hello " ;
$b = $a . "World!" ; // $b содержит строку "Hello World!"

$a = "Hello " ;
$a .= "World!" ; // $a содержит строку "Hello World!"
?>

Побитовые операции

Эти операции предназначены для работы (установки/снятия/проверки) групп битов в целой переменной. Биты целого числа - это не что иное, как отдельные разряды того же самого числа, записанного в двоичной системе счисления. Например, в двоичной системе число 12 будет выглядеть как 1100, а 2 - как 10, так что выражение 12|2 вернет нам число 14 (1110 в двоичной записи). Если переменная не целая, то она вна-
чале округляется, а уж затем к ней применяются перечисленные ниже операторы.

Для представления одного числа используются 32 бита:

  • 0000 0000 0000 0000 0000 0000 0000 0000 - это ноль;
  • 0000 0000 0000 0000 0000 0000 0000 0001 - это 1;
  • 0000 0000 0000 0000 0000 0000 0000 0010 - это 2;
  • 0000 0000 0000 0000 0000 0000 0000 0011 - это 3;
  • 0000 0000 0000 0000 0000 0000 0000 0100 - это 4;
  • 0000 0000 0000 0000 0000 0000 0000 0101 - это 5;
  • 0000 0000 0000 0000 0000 0000 0000 1111 - это 15;

Побитовые операторы:

Пример Название Результат
$a & $b Побитовое "и" Устанавливаются только те биты, которые установлены и в $a, и в $b.
$a | $b Побитовое "или" Устанавливаются те биты, которые установлены либо в $a, либо в $b.
$a ^ $b Исключающее или Устанавливаются только те биты, которые установлены либо только в $a, либо только в $b
~ $a Отрицание Устанавливаются те биты, которые в $a не установлены, и наоборот.
$a << $b Сдвиг влево Все биты переменной $a сдвигаються на $b позиций влево (каждая позиция подразумевает "умножение на 2")
$a >> $b Сдвиг вправо Все биты переменной $a сдвигаються на $b позиций вправо (каждая позиция подразумевает "деление на 2")

Операции сравнения

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

Это в своем роде уникальные операции, потому что независимо от типов своих аргументов они всегда возвращают одно из двух: false или true . Операции сравнения позволяют сравнивать два значения между собой и, если условие выполнено, возвращают true , а если нет - false .

В PHP разрешается сравнивать только скалярные переменные. Массивы и объекты в PHP сравнивать нельзя. Их даже нельзя сравнивать на равенство (при помощи оператора ==), но при выполнении такой операции PHP не выдает предупреждения. Так что удивившись как-то раз, почему два совершенно разных массива при сравнении их с помощью == оказываются вдруг одинаковыми, вспомните, что перед сравнением оба операнда преобразуются в слово array , которое потом и сравнивается.

Подробно о сравнении массивов смотрите .

Операторы сравнения:

Пример Название Результат
$a == $b Равно TRUE если $a равно $b.
$a === $b Тождественно равно TRUE если $a равно $b и имеет тот же тип. (Добавлено в PHP 4)
$a != $b Не равно TRUE если $a не равно $b.
$a <> $b Не равно TRUE если $a не равно $b.
$a !== $b Тождественно не равно TRUE если $a не равно $b или в случае, если они разных типов (Добавлено в PHP 4)
$a < $b Меньше TRUE если $a строго меньше $b.
$a > $b Больше TRUE если $a строго больше $b.
$a <= $b Меньше или равно TRUE если $a is меньше или равно $b.
$a >= $b Больше или равно TRUE если $a больше или равно $b.

Логические операции

Логические операторы предназначены исключительно для работы с логическими выражениями и также возвращают false или true .

Приведем таблицу логических операторов PHP:

Следует заметить, что вычисление логических выражений, содержащих такие операторы, идет всегда слева направо, при этом, если результат уже очевиден (например, false&&что-то всегда дает false ), то вычисления обрываются, даже если в выражении присутствуют вызовы функций. Например, в операторе $logic = 0&&(time()>100); стандартная функция time() никогда не будет вызвана.

Будьте осторожны с логическими операциями - не забывайте про удваивание символа. Обратите внимание, что, например, | и || - два совершенно разных оператора, один из которых может потенциально возвращать любое число, а второй - только false и true .

Операторы инкремента (++) и декремента (--) не работают с логическими переменными.

Операторы эквивалентности

В PHP, начиная с PHP4 есть оператор тождественного сравнения - тройной знак равенства === ,
или оператор проверки на. PHP довольно терпимо относится к тому, что строки неявно преобразуются в числа, и наоборот.
Например, следующий код выведет, что значения переменных равны:

$a=10;
$b="10";

И это несмотря на то, что переменная $a представляет собой число, а $b - строку. Пеперь рассмотрим несколько другой пример:

$a=0; // ноль
$b=""; // пустая строка
if($a==$b) echo "a и b равны"; // Выводит "a и b равны"

Хотя $a и $b явно не равны даже в обычном понимании этого слова, скрипт заявит, что они совпадают. Почему так происходит? Дело в том, что если один из операндов логического оператора может трактоваться как число, то оба операнда трактуются как числа. При этом пустая строка превращается в 0 , который затем и сравнивается с нулем. Неудивительно, что оператор echo срабатывает.
Проблему решает оператор эквивалентности === (тройное равенство). Он не только сравнивает два выражения, но также их типы. Перепишем наш пример с использованием этого оператора.

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

Целочисленное деление - это вывод целой части от деления. Например, если мы 5 разделим на 2, то получим 2, а не 2,5.

С остаточным делением все по-другому. Это вывод остатка от деления на целое число. Например, поделив все ту же пятерку, вы получите не 2, а 1, потому что 5 поделив на 2, мы получаем 2, а в остатке остается 1.

Как выполнить целочисленное деление в PHP

Например, в Python данное деление происходит с помощью простого оператора: "//".

А в PHP сделать это будет не так просто, но все же процесс не требует сверхзнаний языка.

Приведем пример, как это можно реализовать.

В PHP седьмой версии функция выглядит следующим образом:

Intdiv();

В более старой версии, эта же функция выглядит так:

Также существует и способ для всех версий:

Floor();

Как оформить?

Например, возьмем первую функцию, все остальные выполняются примерно также.

$result = intdiv(10, 3); echo $result;

Остаточное деление в PHP

Для того, чтобы вывести целочисленный остаток от деления в PHP, достаточно просто поставить оператор "%".

$i = 10 % 3; echo $i;

Как мы видим, все довольно просто и не требует длительных объяснений.

Где можно применять?

Знания целочисленного деления в PHP будут очень полезны, если вам нужно сравнивать два числа, создавать число-перевертыш (популярное упражнение), или, к примеру, программу под названием FizzBuzz. Суть ее в том, что вам предстоит написать цикл от 1 до 100, который делит каждое число на 3 и 5. Если число, поделенное на 3, в остатке дало 0, то пишем Fizz, если поделенное на 5, то Buzz, а если, поделив и 5, и 3, в остатке получаем 0, то пишем FizzBuzz. Это очень популярное задание на собеседованиях. Если вы выполнили его самостоятельно, то можете собой гордиться.

Или, например, нам предстоит из числа 452 вывести все его числа (4, 5, 2).

Заключение

Безусловно, целочисленное и остаточное деления полезны и встречаются довольно часто, использовать их не так удобно, как в Python, но все же важно.

Теперь вы на шаг ближе к изучению языка программирования PHP, а в будущем станете еще ближе, если будете так же усердно преодолевать трудности.

В продолжение темы:
Интернет

Как создать пассивный доход – 14 работающих способов + 12 советов начинающим бизнесменам. Чтобы ответить на вопрос: как создать пассивный доход , нужно понять, как действуют...