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

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

2016-06-20
Основы PHP → Операторы и операции
PHP, Операторы, Операции, Булева логика, Что выполняется первым

В этом уроке мы рассмотрим, что такое операции и операторы в программировании. Узнаем о арифметических, логических и других операциях. И, конечно же, напишем код!

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

Основные операции, предназначенные в РНР для выполнения математических действий, всем хорошо знакомы. Они аналогичны операциям из обычной арифметики:

<?php
	$var = 5 + 4 	//Сложение (9)
	$var = 15 - 4 	//Вычитание (11)
	$var = 8 / 4 	//Деление (2)
	$var = 4 * 4 	//Умножение (16)
	$var = 8 / 3 	//Остаток от деления (2)
?>

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

<?php
	$answer = 5 % 3; 	// $answer будет равен 2
	$answer = 4 % 3; 	// $answer будет равен 1
	$answer = 3 % 3; 	// $answer будет равен 0
?>

В операциях сложения и деления нужно помнить одну важную особенность, связанную с типами операндов. Если оба аргумента — целые числа, то результат также будет целым числом. В то же время, если хотя бы один из операндов — число с плавающей точкой, то и результат будет величиной с плавающей точкой, даже если получается целое число. Пример: 0.5 + 1.5 = 2.0, а не 2. То есть переменная, в ко- торую мы поместим результат операции 0.5 + 1.5, будет вещественным числом с плавающей точкой.

Для этих пяти операций также существуют сокращенные версии в случае, когда одним из операндов в правой части выражения выступает переменная, которой присваивается значение (переменная из левой части выражения). Например, чтобы не писать $а = $а + $b, можно сокращенно записать $а += $b. А для того чтобы удвоить значение переменной $a, достаточно написать $a *= 2 (то же самое, что $a = $a * 2 ).

Для увеличения или уменьшения значения переменной на единицу есть еще две сокращенных операции: инкремента ( ++ ) и декремента ( -- ). В отличие от рассмотренных выше, это унарные операции. То есть для выполнения соответствующей операции требуется только один операнд. В применении этих унарных операций есть одна тонкость, связанная с их расположением перед операндом или после него. Напишите и выполните сценарий ниже:

<?php
	$a = 1;
	echo($a++."<br>");
	$a = 1;
	echo(++$a);
?>

В результате выполнения должны быть выведены два числа: 1 и 2

Как видите, расположение унарной операции относительно операнда может иметь значение. В первом случае переменная $a увеличивается на единицу уже после выполнения команды вывода echo. Напротив, во втором случае сначала $a становится равной 2, а уже потом происходит вывод с помощью echo. Старайтесь избегать влияния этой особенности на логику выполнения своих сценариев, т. к. такого рода нюансы могут быть неочевидны и малозаметны.

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

Еще одну группу операций для работы с числами представляют операции сравнения:

  1. меньше <;
  2. меньше или равно <=;
  3. больше >;
  4. больше или равно >=;
  5. равно ==;
  6. не равно !=;
  7. идентично ===;
  8. не идентично !==.

Все они сравнивают два заданных значения и возвращают логическое булево значение true или false. Пример представлен ниже:

<?php
	$a = 3 < 4;
	echo($a)
?>

В случае, если значение $a верно, сценарий выведет единицу, иначе — не выведет ничего. Это связано с особенностью представления логических переменных в PHP.

Отдельно следует рассмотреть операции "идентично" ( === ) и "не идентично" ( !== ). Они аналогичны операциям "равно" ( == ) и "не равно" ( != ) с тем лишь дополнением, что при сравнении учитываются также типы операндов. Логику работы операторов продемонстрирует пример ниже:

<?php
	$a = (2 === 2.0); 	/* $a будет равно false, т. к. сравниваются значения разных типов */
	$a = (2 === 2); 	/* $a будет равно true, т. к. сравниваются значения с одинаковыми типами */
	$a = (2 !== 2.0); 	/* $a будет равно true */
	$a = (2 !== 2); 	/* $a будет равно false */
	$a = (2 !== 3); 	/* $a будет равно true, т. к. значения различны */
?>

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

Наиболее важной операцией над строками является операция их объединения (конкатенации, от англ. concatenate). В наших примерах она уже не раз встречалась, и мы будем пользоваться ею постоянно. Для конкатенации строк PHP использует символ точки (" . "). Пример приведен ниже:

<?php
	$a = "Hello, ";
	$b = "World";
	$c = $a . $b;
	echo($c);
?>

По аналогии с арифметическими операциями есть сокращенная операция для конкатенации. Следующая запись:
$а .= $b;
эквивалентна строке:
$a = $a . $b;
С помощью оператора "точка" можно конкатенировать несколько строк:
$d = $a . $b . "some text" . $c;
Язык PHP предоставляет богатый арсенал функций для работы со строками, но т. к. обсуждение функций у нас будет в следующем уроке, то дальнейшие средства обработки строк оставим на потом.

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

Логические операторы проверяют булевы условия. Операндами в данном случае должны выступать переменные с булевым типом данных. Если же в выражении участвует переменная с другим типом (например, целочисленная), то произойдет автоматическое приведение типа этой переменной к булеву. Обратите внимание: это не значит, что переменная изменит свое значение и тип. Это значит только то, что для вычисления результата выражения будет использоваться не непосредственное значение нашей переменной, а ее приведенное к булеву типу значение. Существуют четыре главных булева оператора: И ( and или && ), ИЛИ ( or или || ), НЕ ( not или ! ) и исключающее ИЛИ ( хоr ). Давайте разберемся, как работает каждый из них. В таблице ниже в колонках AND , OR , XOR представлены результаты выполнения соответствующих операторов для разных вариантов операндов.

 Операнд 1 Операнд 2 and or xor
 True True True True False
 True False False True True
 False False False False False

Если с операторами И и ИЛИ обычно не возникает сложностей в понимании, то работа оператора "исключающее ИЛИ" не так очевидна. Запомните, оператор "ис- ключающее ИЛИ" будет возвращать истину тогда, когда один из операндов равен истине, а другой ложен. В случае, когда оба операнда истинны, оператор XOR возвращает false (т. е. ложь), в отличие от обычного оператора OR (логическое ИЛИ).

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

<?php
	$a = true;
	$b = false;
	$c = $a && $b;
	$d = $a || $b;
	$e = !$a;
	$f= $a xor $b;
?>

В данном случае получим следующие значения:

  • $c — false (один из операндов ложный);
  • $d — true (один из операндов истинный);
  • $e — false (противоположное значение к $a );
  • $f — true (один из операндов истинный, в то время как второй — ложный).

Приоритетность операторов

Когда операторы образуют последовательность, например:
$c = $a++ + 2 <= --$b * 4 + $e && $f; то все они выполняются согласно приоритетности. В любом справочнике по PHP можно найти порядок приоритетов операторов. Тем не менее я настоятельно не рекомендую Вам допускать таких последовательностей, т. к. они сильно снижают читабельность кода.

Всегда используйте скобки, для облегчения дальнейшего понимания собственного сценария. В нашем случае может получиться что-то вроде: $c = ($a++ + 2) <= ((--$b * 4) + ($e && $f));

Согласитесь, здесь, по крайней мере, с первого взгляда видно, что $c получает ре- зультат операции сравнения.

Далее приведу список операций по убыванию приоритета. Операции из одного пункта имеют равный приоритет и в выражении выполняются слева направо:

  1. ++ --
  2. !
  3. * / %
  4. + — .
  5. < <= > >=
  6. == != === !==
  7. &&
  8. ||
  9. = += -= *= /= .= %=
  10. and
  11. xor
  12. or

Не стоит забывать, что это отнюдь не все операторы PHP. Здесь приведены только те, что знакомы нам на данный момент.

593
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока