1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Просто о сложном или изучаем PHP7! Часть 5. Арифметические операторы в PHP

Содержание

Операторы в PHP

Операторы — одна из важнейших и базовых тем. Почти все выражения так или иначе содержат их в себе. Без операторов в PHP не было бы возможности делать что-либо с данными вообще, так же, как, например, в математике. Поэтому отнеситесь к данной теме серьёзно, а в конце обязательно сделайте домашнее задание — только практика, только хардкор.

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

Или же переменной:

2 меньше 4. Результат – истина. Всё верно.

Поздравляю, теперь мы в любой момент можем узнать, что находится в переменной, или же сразу узнать результат какого-либо выражения. Давайте теперь вернёмся к нашей основной теме урока.
Тема операторов очень плотно переплетается с темой типов данных. Как мы с вами уже говорили на прошлом уроке, тип данных, который получится в результате какого-либо выражения, будет зависеть от оператора. И, например, результатом сложения при использовании оператора плюса всегда будет число.

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

Начнём с того, что операторы имеют разный приоритет. Как, например, в математике: оператор умножения будет более приоритетным по сравнению с оператором сложения:

Приоритетом можно управлять с помощью круглых скобок, например:

Ну и тут думаю всё понятно:

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

Типы операторов в PHP

А теперь давайте рассмотрим разные типы операторов

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

Тут нас ждут знакомые со школьной скамьи операторы:

int 9
int 3
int 18
int 2
int 2
int 36

Многие впадают в ступор от оператора остатка от деления. Тут всё просто. В нашем случае мы вычисляем остаток от деления 6 на 4. Нацело не делится, целая часть – 1, и 2 в остатке. Ещё несколько аналогичных примеров для понимания:

int 1
int 5
int 0

Думаю, арифметические операторы больше не требуют дополнительных разъяснений.

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

С ним мы уже работали. Используется для присваивания какого-либо значения в переменную.
Классический пример:

Ок, тут всё просто. А как на счёт такого:

Здесь переменной $x присвоили значение 5, а затем умножили на 2 и положили результат выражения в переменную $result. Да, в PHP так тоже можно, хоть и не приветствуется, так как код выглядит довольно запутанно.

Помимо этого есть так называемые сокращенные, комбинированные операторы присваивания.
Например, в комбинации с оператором сложения:

можно было бы записать как

Таким образом, если что-то совершается с левым операндом в исходном виде, то можно использовать эти сокращённые варианты. И да, это применяется и выглядит весьма элегантно, стоит к ним привыкать уже сейчас. Давайте рассмотрим ещё несколько примеров:

И с конкатенацией строк:

string ‘Hello world!’ (length=12)

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

Ну тут из названия понятно, что это за операторы и для чего они предназначены. Результатом их работы всегда будет булево значение (true или false).

Начнём с операторов равенства/неравенства:

boolean true
boolean false
boolean false
boolean true

Давайте поясню. Оператор == приводит операнды к одному типу и после сравнивает их значения. Так строка ‘2’ была преобразована к числу и значения оказались равными.
Оператор тождественного равенства === не выполняет приведения типов и сравнивает сначала то, что типы значений идентичны, например, целые числа, а затем сравнивает их значения. И если они одинаковы, то только в таком случае возвращает true.

Оператор неравенства != приводит типы к одному и сравнивает значения. Если они не равны, вернёт true, иначе – false.
Оператор тождественного неравенства !== сначала сравнивает типы, если они не идентичны, например, строка и число, то вернёт true, иначе сравнит их значения. Если они не равны, вернёт true, иначе – false.

Также к операторам сравнения относятся:

boolean false
boolean true
boolean false
boolean true

Тут всё очевидно, не будем задерживаться.

Spaceship

А теперь рассмотрим оператор сравнения, который появился в PHP7. Это спейсшип (или космический корабль) . Похож на корабль штурмовиков из звёздных войн, не так ли?

Логика у этого оператора следующая:
$a $b
Если $a > $b, вернёт 1
Если $a == $b, вернёт 0
Если $a

int -1
int 0
int 1

Данный оператор был введён для использования в функциях сортировки. Эту тему мы пока поднимать не будем, просто знайте, что вот такой интересный оператор появился в последней версии PHP.

Инкремент и декремент

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

  • $i++ — постфиксный инкремент, возвращает текущее значение $i, а затем увеличивает значение на единицу
  • $i— — постфиксный декремент, возвращает текущее значение $i, а затем уменьшает значение на единицу
  • ++$i – префиксный инкремент, сначала увеличивает значение переменной $i на единицу, а затем возвращает результат
  • —$i – префиксный декремент, сначала уменьшает значение переменной $i на единицу, а затем возвращает результат

Давайте рассмотрим несколько простых примеров:

int 5
int 7
int 7
int 6

С инкрементом и декрементом на этом всё. Идём дальше.

Логические операторы

А теперь поговорим об одном из самых важных типов операторов, а именно – логических. Эти операторы используются для вычисления условий. Результатом такого оператора всегда будет истина или ложь. При этом операндами так же выступают истина или ложь.
Давайте перечислим их:

  • && — логическое И, вернёт true, только если оба операнда истинны (true)
  • || — логическое ИЛИ, вернёт true, если хотя бы один из операндов является истинным
  • ! – ОТРИЦАНИЕ, возвращает true, если операнд – false, и наоборот. Применяется если нужно инвертировать условие, зачастую это очень кстати.
  • xor – исключающее ИЛИ, вернёт true, только если один из операндов true, а другой – false
Читать еще:  Лучшие торрент-клиенты

Давайте посмотрим на примере:

А теперь давайте более интересно – определим, является ли число чётным и при этом оно больше 10. Для того, чтобы проверить на чётность – достаточно взять остаток от деления на 2 и сравнить с нулём. Если будет 0, то число чётное. Давайте напишем первое вычисление:

А теперь второе:

Остаётся сделать так, чтобы выполнились оба условия. Воспользуемся логическим И:

Вычисление можно было бы выразить и одной строкой:

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

И ещё, если операнды не являются булевыми значениями, они будут автоматически приведены к true или false. Оставим это на самостоятельное ковыряние – в домашнем задании будет пункт, касательно этого замечания. Обязательно выполните его.

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

Да-да, для строк существует только один оператор – для их объединения в одну: оператор конкатенации. Он представляет из себя точку и его использование выглядит следующим образом:

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

PHP: Арифметические операторы

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

Операторы вычитания, умножения, деления, деления по модулю и сложения

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

Оператор деления (» / «) возвращает число с плавающей точкой, кроме случая, когда оба значения являются целыми числами (или строками, которые преобразуются в целые числа), которые делятся нацело — в этом случае возвращается целое значение.

При делении по модулю операнды преобразуются в целые числа (c удалением дробной части) до начала операции. Результат операции остатка от деления % будет иметь тот же знак, что и делимое:

Унарное отрицание

Оператор унарного отрицания обозначается знаком ‘ — ‘, он изменяет значение своего единственного операнда на противоположное:

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

Инкремент

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

Префиксная форма инкремента

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

Постфиксная форма инкремента

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

Декремент

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

Просто о сложном или изучаем PHP7! Часть 6. Операторы сравнения в PHP

Операторы сравнения применяются для сравнения двух значений. В зависимости от значений, которые сравниваются между собой, операторы сравнения возвращают логические значения true (истина) или false (ложь). Как таковые, операторы сравнения сами по себе практически не используются, основное их применение это совместная работа с оператором if, который будет рассмотрен в седьмой части.

Просто о сложном или изучаем PHP7! Часть 6. Операторы сравнения в PHP

Создадим две переменные, $a и $b и присвоим им значения 76 и 93 соответственно.

Создадим ещё шесть переменных $c_01 , $c_02 , $c_03 , $c_04 , $c_05 и $c_06

где: $c_01 = $a $b — переменной $c_03 присвоено значение $a > $b (переменная $a больше переменной $b )

$c_04 = $a >= $b — переменной $c_04 присвоено значение $a >= $b (переменная $a больше либо равна переменной $b )

$c_05 = $a == $b — переменной $c_05 присвоено значение $a == $b (переменная $a равна переменной $b )

Выведем в окне веб-браузера тип переменной $c_01 , используя функцию gettype

Перейдём в адресной строке веб-браузера по адресу http://localhost/log.php и видим, что переменная $c_01 имеет тип boolean

Таким же образом выведем в окне веб-браузера типы переменных $c_02 , $c_03 , $c_04 , $c_05 и $c_06 , дописав следующие строки кода:

echo «Переменная c_02 имеет тип:»; echo gettype ($c_02);

echo «Переменная c_03 имеет тип:»; echo gettype ($c_03);

echo «Переменная c_04 имеет тип:»; echo gettype ($c_04);

echo «Переменная c_05 имеет тип:»; echo gettype ($c_05);

Выведем в окне веб-браузера значения переменных $c_01 , $c_02 , $c_03 , $c_04 , $c_05 и $c_06 дописав в файле log.php строки кода:

echo «Переменная c_01 принимает значение: $c_01»;

echo «Переменная c_02 принимает значение: $c_02»;

echo «Переменная c_03 принимает значение: $c_03»;

echo «Переменная c_04 принимает значение: $c_04» ;

echo «Переменная c_05 принимает значение: $c_05»;

В окне веб-браузера видим, что переменные $c_01 , $c_02 и $c_06 приняли значение 1 (единица означает, что переменная имеет значение true )

Если выше в окне веб-браузера мы по отдельности выводили тип и значения переменных $c_01 , $c_02 , $c_03 , $c_04 , $c_05 и $c_06 , то теперь выведем тип и значение данных переменных в одну строку. Для этого воспользуемся функцией var_damp

Читать еще:  RogueKiller Anti-Malware — тщательный поиск угроз и нежелательных программ

В файле log.php допишем следующие строки кода:

echo ‘Переменная $c_01, равная $a $b, имеет тип и принимает значение:’; echo var_dump ($a > $b);

echo ‘Переменная $c_04, равная $a >= $b, имеет тип и принимает значение:’; echo var_dump ($a >= $b);

echo ‘Переменная $c_05, равная $a == $b, имеет тип и принимает значение:’; echo var_dump ($a == $b);

В итоге в окне веб-браузера видим результат работы функции var_damp :

Переменная $c_01, равная $a $b, имеет тип и принимает значение:bool(false) — переменная $c_03 имеет тип bool и значение false

Переменная $c_04, равная $a >= $b, имеет тип и принимает значение:bool(false) — переменная $c_04 имеет тип bool и значение false

Переменная $c_05, равная $a == $b, имеет тип и принимает значение:bool(false) — переменная $c_05 имеет тип bool и значение false

Рассмотрим, почему переменные (на примере $c_01 и $c_03 ) принимают значения true или false

Просто о сложном или изучаем PHP7! Часть 5. Арифметические операторы в PHP

Операция деления («/») возвращает число с плавающей точкой, кроме случая, когда оба значения являются целыми числами (или строками, которые преобразуются в целые числа), которые делятся нацело — в этом случае возвращается целое значение. Для целочисленного деления используйте intdiv() .

При делении по модулю операнды преобразуются в целые числа (путем удаления дробной части) до начала операции. Для деления по модую чисел с плавающей точкой используйте fmod() .

Результат операции остатка от деления % будет иметь тот же знак, что и делимое — то есть, результат $a % $b будет иметь тот же знак, что и $a . Например:

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

User Contributed Notes 15 notes

The modulus operator is very poorly suited for such a simple operation as determining if an int is even or odd. On most common systems, modulus performs a division, which is a very slow operation.
A much better way to find if a number is even or odd is to use the bitwise & operator.

$is_odd = $x & 1; //using and
$is_odd = $x % 2; //using modulus

A very simple yet maybe not obvious use of the modulus (%) operator is to check if an integer is odd or even.

This is nice when you want to make alternating-color rows on a table, or divs.

For positive modulos, here is a mathematically proper modulo which actually works with negative integers.

With % (modulo), it looks like php uses the C operator (apart from some sanity-checks), according to following `awk` command, getting the relevant lines of arbitrary commits (dbb462db5d and 04d5086578 for me) in github.com/php/php-src:

Note that operator % (modulus) works just with integers (between -214748348 and 2147483647) while fmod() works with short and large numbers.

Modulus with non integer numbers will give unpredictable results.

To get a positiv result

function modulo(int $a, int $b):?int <
if ($b == 0) <
throw new Exception(‘modulo : second operand must not be zero’);
>
$b = abs($b);
// test $b == 1 for performance when $a

When dealing purely with HTML, especially tables, or other things in «grids» the modulous operator is really useful for splitting up the data with a seperator.

This snippet reads any gif files from the directory the script is in, prints them out and puts in a break every 5th image.

PHP: Арифметические операторы

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

Операторы вычитания, умножения, деления, деления по модулю и сложения

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

Оператор деления (» / «) возвращает число с плавающей точкой, кроме случая, когда оба значения являются целыми числами (или строками, которые преобразуются в целые числа), которые делятся нацело — в этом случае возвращается целое значение.

При делении по модулю операнды преобразуются в целые числа (c удалением дробной части) до начала операции. Результат операции остатка от деления % будет иметь тот же знак, что и делимое:

Унарное отрицание

Оператор унарного отрицания обозначается знаком ‘ — ‘, он изменяет значение своего единственного операнда на противоположное:

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

Инкремент

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

Префиксная форма инкремента

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

Постфиксная форма инкремента

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

Декремент

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

Операторы PHP

Здравствуйте уважаемые начинающие программисты. Продолжим изучение элементов, из которых состоит php.

В этой статье мы узнаем, что такое операторы php. Вообще-то, с некоторыми из них мы знакомы чуть ли не с детства, только знаем их как знаки (+, -, =, !, ?).

В php все они называются операторами, что вполне логично, так как они выполняют определённое действие, или операцию.

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

Давайте начнём по порядку.

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

Арифметические операторы применяются для выполнения действий с числами.

+ — оператор сложения;
— — оператор вычитания;
/ — оператор деления;
* — оператор умножения;
% — оператор получения остатка при делении;
++ — оператор увеличения на единицу (инкремент);
— — — оператор уменьшения на единицу (декремент)

Читать еще:  Причины почему нет гудков в трубке

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

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

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

Количество знаков, выводимых для дробного числа, зависит от установленного значения в директиве precision , находящейся в файле php.ini. Обычно это 12 символов не считая точки.

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

Действия с арифметическими операторами, за исключением инкремента и декремента, называются бинарными, так как в них участвуют два операнда (слагаемое + слагаемое, делимое / делитель, и т. п.)

Действия инкремента и декремента называются унарными, так как в них участвует один операнд. Есть ещё условная операция, в которой участвуют три операнда.

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

Тип переменной integer (целые числа)

Тип переменной string (строка)

Буква «d» выводится вместо буквы «с» потому, что она следующая по алфавиту, а мы увеличили значение переменной на единицу.

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

Поразрядные операторы

Поразрядные операторы предназначены для работы с двоичными данными. Если кто-то не представляет что это такое — объясню. Двоичные числа — это числа типа 1001000011100000111000.

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

— поразрядное отрицание (not);
| — поразрядное объединение ИЛИ (or);
^ — поразрядное исключение ИЛИ (xor);
> — сдвиг вправо битового значения операнда;

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

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

Операторы сравнения относятся к логическим операторам, и применяются для сравнения переменных. Массивы и объекты с их помощью сравнивать нельзя.

> — оператор больше;
=> — оператор больше или равно;
0 ; // 1
echo 1 0 ; // 1
echo 1 == 1 ; // 1
?>

Вот так, сами по себе, операторы сравнения почти не применяются. Основное их предназначение — это работа в паре с оператором if .

Условные операторы if, else, elseif .

Условные операторы называются так потому, что предназначены для проверки некоего условия, в зависимости от которого выполняется то, или иное действие.

В качестве аргумента, оператор if принимает логическую переменную, или выражение. Если условие верно то выводится результат, если не верно — пустая строка.

Если в программе нужно задать два действия, одно из которых будет выполняться при истинном значении, а другое при ложном, то вместе с оператором if , применяется оператор else

В этом случае выведется «Осадки не предвидятся», а если в выражении сменить знак «Больше» на «Меньше», то выведется «Возможны осадки». Вот так условные операторы проверяют условие, и выводят согласно ему верный результат.

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

Эта программа выведет «Снег». Если бы ни одно из условий не подошло, то вывелось бы «Возможны осадки».

Оператор if может содержать сколько угодно блоков elseif , и только один оператор else .

Допускается альтернативный вариант записи — без фигурных скобок. В таком случае строки операторов if, else, elseif , заканчиваются двоеточием, а вся конструкция — ключевым словом (оператором) endif .

elseif ($next == $nexT):

echo «Возможны осадки» ;
endif ;
?>

Логические операторы

Логические операторы похожи на поразрядные операторы. Разница между ними в том, что первые оперируют логическими переменными, а вторые цифрами.

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

&& — соединительный союз И;
and — тоже И, но с меньшим приоритетом;
|| — разделительный союз ИЛИ;
or — тоже ИЛИ, но с меньшим приоритетом;
xor — исключающее один элемент ИЛИ;
! — отрицание;

Меньший приоритет означает, что при наличии обеих операторов, первым выполняется тот, у которого больший приоритет.

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

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

Оператор присваивания = присваивает левому операнду значение правого.

Оператор точка

Оператор точка отделяет целую часть числа от дробной, и объединяет несколько строк и число, в одну целую строку.

Оператор круглые скобки

Как и в математике, оператор круглые скобки задаёт приоритет действию, в них заключённому.

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

Оператор фигурные скобки

В php существует три способа, или даже стиля, размещения фигурных скобок.

1. BSD стиль — скобки выравниваются по левому краю.

if ($next)
<
echo «Здравствуйте уважаемые начинающие программисты» ;
>

2. GNU стиль — скобки выравниваются с отступом от левого края

if ($next)
<
echo «Здравствуйте уважаемые начинающие программисты» ;
>

3. K&R стиль — скобка открывается в строке оператора

if ($next) <
echo «Здравствуйте уважаемые начинающие программисты» ;
>

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

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

Достаточно иметь представления об основных базовых. А остальные будем разбирать на практических примерах.


Перемена

По аэропорту Шереметьево в слезах бродит ирландец. Один из служащих решил посочувствовать:
— По родине скучаете?
— Вовсе нет. Только что я потерял весь свой багаж
— Как же это могло случиться?
— Сам не пойму. Вроде как следует пробку затыкал

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector