Лекция
Привет, Вы узнаете о том , что такое операции с переменными php операторы выражения в php, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое операции с переменными php операторы выражения в php , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .
Для осуществления операций с переменными существуют различные группы операторов.
Оператором называется нечто, состоящее из одного или более значений (выражений, если говорить на жаргоне программирования), которое можно вычислить как новое значение (таким образом, вся конструкция может рассматриваться как выражение). Отсюда следует, что функции или любые другие конструкции, которые возвращают значение (например,print()) являются операторами, в отличие от всех остальных языковых конструкций (например, echo()), которые ничего не возвращают.
Арифметические операции в PHP
Помните школьные основы арифметики? Описанные ниже операторы работают так же.
Пример | Название | Результат |
---|---|---|
-$a | Отрицание | Смена знака $a. |
$a + $b | Сложение | Сумма $a и $b. |
$a - $b | Вычитание | Разность $a и $b. |
$a * $b | Умножение | Произведение $a и $b. |
$a / $b | Деление | Частное от деления $a на $b. |
$a % $b | Деление по модулю | Целочисленный остаток от деления $a на $b. |
Операция деления ("/") всегда возвращает вещественный тип, даже если оба значения были целочисленными (или строками, которые преобразуются в целые числа). В противном случае результат будет дробным.
Операция вычисления остатка от деления "%" работает только с целыми числами, так что применение ее к дробным может привести к нежелательному результату.
Возможно использование скобок. Приоритет одних математических операций над другими и изменение приоритетов при использовании скобок в арифметических выражениях соответствуют обычным математическим правилам.
Операции инкремента и декремента
PHP, аналогично C, поддерживает префиксные и постфиксные операторы инкремента и декремента.
Пример | Название | Действие |
---|---|---|
++$a | Префиксный инкремент | Увеличивает $a на единицу и возвращает значение $a. |
$a++ | Постфиксный инкремент | Возвращает значение $a, а затем увеличивает $a на единицу. |
--$a | Префиксный декремент | Уменьшает $a на единицу и возвращает значение $a. |
$a-- | Постфиксный декремент | Возвращает значение $a, а затем уменьшает $a на единицу. |
Постфиксные операторы инкремента и декремента
Как и в языке Си, эти операторы увеличивают или уменьшают значение переменной, а в выражении возвращают значение переменной $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.
<?php
echo "<h3>Постфиксный инкремент</h3>";
$a = 5;
echo "Должно быть 5: " . $a++ . "<br />\n";
echo "Должно быть 6: " . $a . "<br />\n";
echo "<h3>Префиксный инкремент</h3>";
$a = 5;
echo "Должно быть 6: " . ++$a . "<br />\n";
echo "Должно быть 6: " . $a . "<br />\n";
echo "<h3>Постфиксный декремент</h3>";
$a = 5;
echo "Должно быть 5: " . $a-- . "<br />\n";
echo "Должно быть 4: " . $a . "<br />\n";
echo "<h3>Префиксный декремент</h3>";
$a = 5;
echo "Должно быть 4: " . --$a . "<br />\n";
echo "Должно быть 4: " . $a . "<br />\n";
?>
Булевые типы не подлежат инкрементированию и декрементированию.
Операции присвоения
Базовый оператор присвоения обозначается как =. На первый взгляд может показаться, что это оператор "равно". На самом деле это не так. В действительности, оператор присвоения означает, что левый операнд получает значение правого выражения, (т.е. устанавливается результирующим значением).
Результатом выполнения оператора присвоения является само присвоенное значение. Таким образом, результат выполнения $a = 3 будет равен 3. Это позволяет использовать конструкции вида:
<?php
$a = ($b = 4) + 5; // результат: $a установлена значением 9, переменной $b присвоено 4.
?>
В дополнение к базовому оператору присвоения имеются "комбинированные операторы" для всех бинарных арифметических и строковых операций, которые позволяют использовать некоторое значение в выражении, а затем установить его как результат данного выражения. Например:
<?php
$a = 3;
$a += 5; // устанавливает $a значением 8, аналогично записи: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // устанавливает $b строкой "Hello There!", как и $b = $b . "There!";
?>
Обратите внимание, что присвоение копирует оригинальную переменную в новую (присвоение по значению), таким образом все последующие изменения одной из переменных на другой никак не отражаются. Начиная с PHP 4, также поддерживается присваивание по ссылке, используя синтаксис $var = &$othervar;
'Присвоение по ссылке' означает, что обе переменные указывают на одни и те же данные и никакого копирования не происходит. Подробно о ссылках вы можете узнать здесь.
Строковые операции
В PHP есть два оператора для работы со строками. Первый - оператор конкатенации ('.'), который возвращает объединение левого и правого аргумента. Второй - оператор присвоения с конкатенацией, который присоединяет правый аргумент к левому. Приведем конкретный пример:
<?php
$a = "Hello ";
$b = $a . "World!"; // $b содержит строку "Hello World!"
$a = "Hello ";
$a .= "World!"; // $a содержит строку "Hello World!"
?>
Смотрите также: Операции присвоения
Побитовые операции
Эти операции предназначены для работы (установки/снятия/проверки) групп битов в целой переменной. Биты целого числа — это не что иное, как отдельные разряды того же самого числа, записанного в двоичной системе счисления. Об этом говорит сайт https://intellect.icu . Например, в двоичной системе число 12 будет выглядеть как 1100, а 2 — как 10, так что выражение 12|2 вернет нам число 14 (1110 в двоичной записи). Если переменная не целая, то она вна-
чале округляется, а уж затем к ней применяются перечисленные ниже операторы.
Для представления одного числа используются 32 бита:
Побитовые операторы:
Пример | Название | Результат |
---|---|---|
$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:
Пример | Название | Результат |
---|---|---|
$a and $b | Логическое 'и' | TRUE если и $a, и $b TRUE. |
$a or $b | Логическое 'или' | TRUE если или $a, или $b TRUE. |
$a xor $b | Исключающее 'или' | TRUE если $a, или $b TRUE, но не оба. |
! $a | Отрицание | TRUE если $a не TRUE. |
$a && $b | Логическое 'и' | TRUE если и $a, и $b TRUE. |
$a || $b | Логическое 'или' | TRUE если или $a, или $b TRUE. |
Следует заметить, что вычисление логических выражений, содержащих такие операторы, идет всегда слева направо, при этом, если результат уже очевиден (например, false&&что-то всегда дает false), то вычисления обрываются, даже если в выражении присутствуют вызовы функций. Например, в операторе $logic = 0&&(time()>100);
стандартная функция time()никогда не будет вызвана.
Будьте осторожны с логическими операциями — не забывайте про удваивание символа. Обратите внимание, что, например,| и || — два совершенно разных оператора, один из которых может потенциально возвращать любое число, а второй — только false и true.
Операторы инкремента (++) и декремента (--) не работают с логическими переменными.
Операторы эквивалентности
В PHP, начиная с PHP4 есть оператор тождественного сравнения — тройной знак равенства ===,
или оператор проверки на эквивалентность. PHP довольно терпимо относится к тому, что строки неявно преобразуются в числа, и наоборот.
Например, следующий код выведет, что значения переменных равны:
$a=10;
$b="10";
if($a==$b) echo "a и b равны"; // Выводит "a и b равны"
И это несмотря на то, что переменная $a представляет собой число, а $b — строку. Пеперь рассмотрим несколько другой пример:
$a=0; // ноль
$b=""; // пустая строка
if($a==$b) echo "a и b равны"; // Выводит "a и b равны"
Хотя $a и $b явно не равны даже в обычном понимании этого слова, скрипт заявит, что они совпадают. Почему так происходит? Дело в том, что если один из операндов логического оператора может трактоваться как число, то оба операнда трактуются как числа. При этом пустая строка превращается в 0, который затем и сравнивается с нулем. Неудивительно, что оператор echo срабатывает.
Проблему решает оператор эквивалентности === (тройное равенство). Он не только сравнивает два выражения, но также их типы. Перепишем наш пример с использованием этого оператора:
$a=0; // ноль
$b=""; // пустая строка
if($a===$b) echo "a и b равны"; // Ничего не выводит
Вот теперь ничего выведено не будет. Но возможности оператора эквивалентности идут далеко за пределы сравнения простых переменных. С его помощью можно сравнивать также и массивы, объекты и т. д. Это бывает иногда очень удобно. Вот пример:
$a=array(’a’=>’aaa’);
$b=array(’b’=>’bbb’);
if($a==$b) echo "С использованием == a=b<br>";
if($a===$b) echo "С использованием === a=b<br>";
Если запустить представленный код, то будет выведено первое сообщение, но не второе.
Произойдет это по той причине, что, как мы уже говорили, операнды-массивы преобразуются в строки array, которые затем и будут сравниваться. Оператор === лишен этого недостатка, поэтому работает верно.
Для оператора === существует и его антипод — оператор !===
Операции с символьными переменными
PHP следует соглашениям Perl (в отличие от С) касательно выполнения арифметических операций с символьными переменными. Например в Perl 'Z'+1 будет вычислено как 'AA', в то время как в C 'Z'+1 будет вычислено как '[' ( ord('Z') == 90, ord('[') == 91 ). Следует учесть, что к символьным переменным можно применять операцию инкремента, в то время как операцию декремента применять нельзя.
<?php
$i = 'W';
for($n=0; $n<6; $n++)
echo ++$i . "\n";
/*
Результат работы будет следующий:
X
Y
Z
AA
AB
AC
*/
?>
Приоритеты операторов PHP
Операторы с более высоким уровнем приоритета выполняются в первую очередь:
Приоритет
|
Оператор
|
Порядок выполнения
|
13
|
(постфикс)++ (постфикс)--
|
слева направо
|
12
|
++(префикс) --(префикс)
|
справа налево
|
11
|
* / %
|
слева направо
|
10
|
+ -
|
слева направо
|
9
|
<< >>
|
слева направо
|
8
|
< <= > >=
|
слева направо
|
7
|
== !=
|
слева направо
|
6
|
&
|
слева направо
|
5
|
^
|
слева направо
|
4
|
|
|
слева направо
|
3
|
&&
|
слева направо
|
2
|
||
|
слева направо
|
1
|
= += -= *= /= %= >>= <<== &= ^= |=
|
справа налево
|
В любом случае, если вы сомневаетесь, или боитесь ошибиться, используйте скобки.
Выражения - это краеугольный камень PHP. Почти все, что вы пишите в PHP, является выражением. Выражения являются "кирпичиками", из которых состоят PHP-программы. Под выражением в PHP понимается то, что имеет значение. И обратно: если что-то имеет значение, то это "что-то" и есть выражение.
Основными формами выражений являются константы и переменные. Например, если вы записываете "$a = 100", вы присваиваете '100' переменной $a:
$a = 100;
В приведенном примере $a - это переменная, = - это оператор присваивания, а 100 - это и есть выражения. Его значение 100.
Выражением может быть и переменная, если ей сопоставлено определенное значение:
$x = 7;
$y = $x;
В первой строке рассмотренного примера выражением является константа 7, а во второй строке - переменная $x
, т.к. ранее ей было присвоено значение 7. $y = $x
также является выражением.
Немного более сложными примерами выражений являются функции. Например, рассмотрим следующую функцию:
<?php
function funct ()
{
return 5;
}
?>
Исходя из того, что вы хорошо знакомы с концепцией функций (если нет, то прочитайте раздел о пользовательских функциях), вы полагаете, что запись $x = funct() абсолютно эквивалента записи $x = 5, и вы правы. Функции - это выражения, значением которых является то, что возвращает функция. Поскольку funct() возвращает 5, значением выражения 'funct()' является 5. Как правило, функции возвращают не статическое значение, а вычисленное.
PHP поддерживает три типа скалярных значений: целочисленные, с плавающей точкой и строковые значения (скалярными являются значения, которые вы не можете 'разбить' на меньшие части, в отличие, например, от массивов). PHP поддерживает также два комбинированных (не скалярных) типа: массивы и объекты. Каждый из этих типов значений может присваиваться переменной или возвращаться функцией.
PHP - это язык, ориентированный на выражения и рассматривающий почти все как выражение. Вернемся к примеру, с которым мы уже имели дело: '$x = 7'. Легко заметить, что здесь присутствуют два значения - значение целочисленной константы '7' и значение переменной $x, также принимающей значение 7. Но на самом деле здесь присутствует и еще одно значение - значение самого присвоения. Само присвоение вычисляется в присвоенное значение, в данном случае - в 7. На практике это означает, что '$x = 7', независимо от того, что оно делает, является выражением со значением 7. Таким образом, запись '$y = ($x = 7)' равносильна записи '$x = 5; $y = 5;' (точка с запятой обозначает конец выражения). Поскольку операции присвоения анализируются справа налево, вы также можете написать '$y = $x = 7'.
Логические выражения
Логические выражения — это выражения, у которых могут быть только два значения: ложь и истина (или, что почти то же самое, 0 и 1). Однако, если говорить более строго, то абсолютно любое выражение может рассматриваться как логическое в "логическом" контексте (например, как условие для конструкции if-else). Ведь в качестве TRUE (истины) может выступать любое ненулевое число, непустая строка и т. д., а под FALSE (ложью) подразумевается все остальное.
Для логических выражений справедливы все свойства логических переменных. Эти выражения чаще всего возникают при применении операторов >, < и == (равно), || (логическое ИЛИ), && (логическое И), ! (логическое НЕ) и других. Например:
$a = 10 < 5; // $a = false
$a = $b==1; // $a=true
$a = $b >= 1&& $b <= 10; // $a = true, если $b в пределах от 1 до 10
$a = !($b || $c) && $d; // $a = true, если $b и $c ложны, а $d — истинно
Как осуществляется проверка истинности той или иной логической переменной? Точно так же, как и любого логического выражения:
$b = $a >= 1 && $a <= 10; // присваиваем $b значение логического выражения
if($b) echo "a в нужном диапазоне значений";
Подробнее о логических операциях смотрите здесь
Строковые выражения
Строки в PHP — одни из самых основных объектов. Они могут содержать текст вместе с символами форматирования или даже бинарные данные.
Определение строки в кавычках или апострофах может начинаться на одной строке, а завершаться — на другой. Вот пример строкового выражения:
$a = "Это текст";
В заключение, эта статья об операции с переменными php операторы выражения в php подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое операции с переменными php операторы выражения в php и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)