Операции в PHP

Операции в PHP

Последнее обновление: 1.11.2015

В PHP мы можем использовать различные операторы: арифметические, логические и т.д. Рассмотрим каждый тип операций.

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

  • + (операция сложения)

    Например, $a + 5
  • — (операция вычитания)

    Например, $a - 5
  • * (умножение)

    Например, $a * 5
  • / (деление)

    Например, $a / 5
  • % (получение остатка от деления)

    Например:
    
    $a=12;
    echo $a % 5; // равно 2
    
  • ++ (инкремент/ увеличение значения на единицу)

    Например, ++$a

    Важно понимать разницу между выражениями ++$a и $a++. Например:

    
    $a=12;
    $b=++$a; // $b равно 13
    echo $b;
    

    Здесь сначала к значению переменной $a прибавляется единица, а затем ее значение приравнивается переменной $b. Иначе было бы, если бы выражение выглядело так:

    $b=$a++;. Здесь сначала значение переменной $a приравнивалось переменной $b, а затем происходило увеличение значения переменной $a.

  • — (декремент/ уменьшение значения на единицу)

    Например, --$a. И также, как и в случае с инкрементом, существуют два вида записи: --$a и $a--

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

  • =

    Приравнивает переменной определенное значение: $a = 5
  • +=

    Сложение с последующим присвоением результата. Например:
    
    $a=12;
    $a += 5;
    echo $a; // равно 17
    
  • -=

    Вычитание с последующим присвоением результата. Например:
    $a=12; $a -= 5; echo $a; // равно 7
  • *=

    Умножение с последующим присвоением результата:
    
    $a=12;
    $a *= 5;
    echo $a; // равно 60
    
  • /=

    Деление с последующим присвоением результата:
    
    $a=12;
    $a /= 5;
    echo $a; // равно 2.4
    
  • .=

    Объединение строк с присвоением результата. Применяется к двум строкам. Если же переменные хранят не строки, а, к примеру, числа, то их значения преобразуются в строки и затем проводится операция:
    
    $a=12;
    $a .= 5;
    echo $a; // равно 125
    // идентично
    $b="12";
    $b .="5"; // равно 125
    
  • %=

    Получение остатка от деления с последующим присвоением результата:
    
    $a=12;
    $a %= 5;
    echo $a; // равно 2
    

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

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

  • ==

    Оператор равенства сравнивает два значения, и если они равны, возвращает true, иначе возвращает false: $a == 5
  • ===

    Оператор тождественности также сравнивает два значения, и если они равны, возвращает true, иначе возвращает false:
    $a === 5
  • !=

    Сравнивает два значения, и если они не равны, возвращает true, иначе возвращает false: $a != 5
  • !==

    Сравнивает два значения, и если они не равны, возвращает true, иначе возвращает false: $a !== 5
  • >

    Сравнивает два значения, и если первое больше второго, то возвращает true, иначе возвращает false: $a > 5
  • <

    Сравнивает два значения, и если первое меньше второго, то возвращает true, иначе возвращает false: $a < 5
  • >=

    Сравнивает два значения, и если первое больше или равно второму, то возвращает true, иначе возвращает false:
    $a >= 5
  • <=

    Сравнивает два значения, и если первое меньше или равно второму, то возвращает true, иначе возвращает false: $a <= 5
Оператор равенства и тождественности

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


<?php
$a = "22a";
$b = 22;
if($a==$b)
	echo "равны";
else
	echo "не равны";
?>

Очевидно, что переменные хранят разные значения разных типов. Но при сравнении они будут приводится к одному типу — числовому. И переменная $a будет приведена к числу 22. И в итоге обе переменных окажутся равны.

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


$a = false;
$b = 0;

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


$a = "22a";
$b = 22;
if($a===$b)
	echo "равны";
else
	echo "не равны";

Теперь переменные будут не равны.

Аналогично работают операторы неравенства != и !==.

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

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

  • &&

    Возвращает true, если обе операции сравнения возвращают true, иначе возвращает false: $a == 5 && $b = 6
  • and

    Аналогично операции &&: $a == 5 and $b > 6
  • ||

    Возвращает true, если хотя бы одна операция сравнения возвращают true, иначе возвращает false: $a == 5 || $b = 6
  • or

    Аналогично операции ||: $a < 5 or $b > 6
  • !

    Возвращает true, если операция сравнения возвращает false:
    !($a >= 5)
  • xor

    Возвращает true, если только одно из значений равно true. Если оба равны true или ни одно из них не равно true, возвращает false. Например:
    
    $a=12;
    $b=6;
    if($a xor $b)
    	echo 'true';
    else
    	echo 'false';
    

    Здесь результат логической операции будет false, так как обе переменных имеют определенное значение. Изменим код:

    
    $a=12;
    $b=NULL;
    if($a xor $b)
    	echo 'true';
    else
    	echo 'false';
    

    Здесь уже результат будет true, так как значение одной переменной не установлено. Если переменная имеет значение NULL, то в логических операциях ее значение будет рассматриваться как

    false

Битовые операции

Битовые операции производятся над отдельными битами числа. Числа рассматриваются в двоичном представлении, например, 2 в двоичном представлении 010, число 7 — 111.

  • & (логическое умножение)

    Умножение производится поразрядно, и если у обоих операндов значения разрядов равно 1, то операция возвращает 1, иначе возвращается число 0. Например:
    
    $a1 = 4; //100
    $b1 = 5; //101
    echo $a1 & $b1; // равно 4
    

    Здесь число 4 в двоичной системе равно 100, а число 5 равно 101. Поразрядно умножим числа и получим (1*1, 0*0, 0 *1) = 100, то есть число 4 в десятичном формате.

  • | (логическое сложение)

    Похоже на логическое умножение, операция также производится по двоичным разрядам, но теперь возвращается единица, если хотя бы у одного числа в данном разряде имеется единица. Например:
    
    $a1 = 4; //100
    $b1 = 5; //101
    echo $a1 | $b1; // равно 5
    
  • ~ (логическое отрицание)

    инвертирует все разряды: если значение разряда равно 1, то оно становится равным нулю, и наоборот.
    
    $b = 5;
    echo ~$b;
    
  • <<

    x<<y — сдвигает число x влево на y разрядов. Например, 4<<1 сдвигает число 4 (которое в двоичном представлении 100) на один разряд влево, то есть в итоге получается 1000 или число 8 в десятичном представлении

  • >>

    x>>y — сдвигает число x вправо на y разрядов. Например, 16>>1 сдвигает число 16 (которое в двоичном представлении 10000) на один разряд вправо, то есть в итоге получается 1000 или число 8 в десятичном представлении

Объединение строк

Для объединения строк используется оператор «точка». Например, соединим несколько строк:


$a="Привет, ";
$b=" мир";
echo $a . $b . "!";

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

metanit.com

PHP: Приоритет оператора — Manual

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

Приоритет оператора определяет, насколько «тесно» он связывает между собой два выражения. Например, выражение 1 + 5 * 3 вычисляется как 16, а не 18, поскольку оператор умножения («*») имеет более высокий приоритет, чем оператор сложения («+»). Круглые скобки могут использоваться для принудительного указания порядка выполнения операторов. Например, выражение (1 + 5) * 3 вычисляется как 18.

Если операторы имеют равный приоритет, то будут ли они выполняться справа налево или слева направо определяется их ассоциативностью. К примеру, «-» является лево-ассоциативным оператором. Следовательно

1 — 2 — 3 сгруппируется как (1 — 2) — 3 и пересчитается в -4. С другой стороны «=» — право-ассоциативный оператор, так что $a = $b = $c сгруппируется как $a = ($b = $c).

Неассоциативные операторы с одинаковым приоритетом не могут использоваться совместно. К примеру 1 < 2 > 1 не будет работать в PHP. Выражение 1 <= 1 == 1, с другой стороны, будет, поскольку == имеет более низкий приоритет чем <=.

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

В следующей таблице приведен список операторов, отсортированный по убыванию их приоритетов. Операторы, размещенные в одной строке имеют одинаковый приоритет и порядок их выполнения определяется исходя из их ассоциативности.

Пример #1 Ассоциативность

<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
// ассоциативность тернарного оператора отличается от C/C++
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>

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

Пример #2 Неопределенный порядок вычисления

<?php
$a = 1;
echo $a + $a++; // может вывести как 2 так и 3$i = 1;
$array[$i] = $i++; // может установить индекс как 1, так 2
?>

Пример #3 +, и . имеют одинаковый приоритет

<?php
$x = 4;
// следующий код может выдать неожиданный результат:
echo "x минус 1 равно " . $x-1 . ", ну я надеюсь\n";
// поскольку он вычисляется таким образом:
echo (("x минус один равно " . $x) - 1) . ", ну я надеюсь\n";
// требуемый приоритет следует задать скобками:
echo "x минус 1 равно " . ($x-1) . ", ну я надеюсь\n";
?>

Результат выполнения данного примера:

-1, ну я надеюсь
-1, ну я надеюсь
x минус один равно 3, ну я надеюсь

Замечание:

Несмотря на то, что = имеет более низкий приоритет, чем большинство других операторов, PHP все же позволяет делать так: if (!$a = foo()), в этом примере результат выполнения foo() будет присвоен $a.

www.php.net

PHP :: Условные операторы

base06 11

Внимание! Данный урок устарел!
Переходите к новому уроку «Условия в PHP».

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

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

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

Логические операции позволяют комбинировать логические значения (называемые также истинностными) для получения новых логических значений. Как показано в таблице ниже, в языке PHP поддерживаются стандартные логические операции (and, or, not и xor), причем первые две имеют альтернативные версии.

Логические операции PHP
Операция Описание
and Операция, результат которой принимает истинное значение тогда и только тогда, когда оба ее операнда имеют истинное значение
or Операция, результат которой принимает истинное значение, если один из ее операндов (или оба операнда) имеет истинное значение
! Операция, результат которой принимает истинное значение, если ее единственный операнд (задаваемый справа от знака операции) имеет ложное значение, и ложное значение, если операнд имеет истинное значение
xor Операция, результат которой принимает истинное значение, если любой из ее операндов (но не оба одновременно) имеет истинное значение
&& То же, что и операция and, но связывает свои операнды сильнее по сравнению с этой операцией
|| То же, что и операция or, но связывает свои операнды сильнее по сравнению с этой операцией

Операции && и || должны быть знакомы программистам, работающим с языком C. Операцию ! обычно называют not, поскольку она становится отрицанием для того операнда, к которому применяется.

Чтобы проверить, имеют ли оба операнда значение TRUE, следует использовать оператор AND, который можно записать и как двойной амперсанд (&&). Оба оператора, AND и &&, являются логическими, их единственное отличие в том, что оператор && имеет более высокий приоритет, чем оператор AND. То же самое относится к операторам OR и ||. Оператор AND возвращает TRUE, только если оба операнда имеют значение TRUE; в противном случае возвращается значение FALSE.

Чтобы проверить, имеет ли хотя бы один операнд значение TRUE, следует использовать оператор OR, который можно записать и как двойную вертикальную линию (||). Этот оператор возвращает TRUE, если хотя бы один из операндов имеет значение TRUE.

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

Проверить, имеет ли значение TRUE только один из операндов (но не оба сразу), позволяет оператор XOR. Этот оператор возвращает значение TRUE, если один и только один из операндов имеет значение TRUE. Если оба операнда имеют значение TRUE, оператор вернет значение FALSE.

Инвертировать логическое значение можно с помощью оператора NOT, который часто записывается и в виде восклицательного знака (!). Он возвращает значение TRUE, если операнд имеет значение FALSE, и значение FALSE, если операнд имеет значение TRUE.

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

Логические выражения и их результаты
Пример логического выражения Результат
TRUE AND TRUE TRUE
FALSE AND TRUE FALSE
TRUE OR FALSE TRUE
FALSE OR FALSE FALSE
TRUE XOR TRUE FALSE
TRUE XOR FALSE TRUE
!TRUE FALSE
!FALSE TRUE

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

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

Операции сравнения
Операция Наименование Описание
== Равно Операция, результат которой принимает истинное значение, если ее операнды равны друг другу, в противном случае принимает ложное значение
!= Не равно Операция, результат которой принимает ложное значение, если ее операнды равны друг другу, в противном случае принимает истинное значение
< Меньше Операция, результат которой принимает истинное значение, если левый операнд меньше правого, в противном случае принимает ложное значение
> Больше Операция, результат которой принимает истинное значение, если левый операнд больше правого, в противном случае принимает ложное значение
<= Меньше или равно Операция, результат которой принимает истинное значение, если левый операнд меньше или равен правому, в противном случае принимает ложное значение
>= Больше или равно Операция, результат которой принимает истинное значение, если левый операнд больше или равен правому, в противном случае принимает ложное значение
=== Идентично Операция, результат которой принимает истинное значение, если оба операнда равны друг другу и относятся к одному и тому же типу, в противном случае принимает ложное значение

Необходимо следить за тем, чтобы не допустить одну весьма распространенную ошибку — не путать операцию присваивания (=) с операцией сравнения (==).

Приоритет операций

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

Код PHP
$var1 = 14; $var2 = 15;

if (($var1 < $var2) && ($var2 < 20))
    echo '$var2 больше $var1 но меньше 20';

можно переписать как

Код PHP
...

if ($var1 < $var2 && $var2 < 20)
   ...

Инструкция if — else

Инструкция if позволяет исполнить блок кода, если условное выражение в этой инструкции имеет значение TRUE; в противном случае блок кода не исполняется. В качестве условия может применяться любое выражение, включающее проверки на ненулевое значение, равенство, NULL с участием переменных и значений, возвращаемых функциями.

Не важно, какие отдельные условные выражения составляют условное предложение. Если условие истинно, исполняется программный код, заключенный в фигурные скобки ({}). В противном случае PHP игнорирует его и переходит к проверке второго условия, проверяя все условные предложения, которые вы записали, пока не наткнется на инструкцию else, после чего автоматически выполнит этот блок. Инструкция else не является обязательной.

Синтаксис инструкции if:

if (условное выражение)
{
    блок программного кода;
}

Если в результате вычисления условного выражения получается значение TRUE, то блок программного кода, расположенный после него, будет исполнен. В следующем примере если переменная $username имеет значение ‘Admin’, будет выведено приветственное сообщение. В противном случае ничего не произойдет:

Код PHP
$username = "Admin";

if ($username == "Admin") 
{
	echo 'Добро пожаловать на страницу администратора.';
}

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

Необязательная инструкция else – это блок программного кода, исполняемый по умолчанию, когда условное выражение возвращает значение FALSE. Инструкцию else нельзя использовать отдельно от инструкции if, поскольку у else нет собственного условного выражения. То есть else и if в вашем коде всегда должны быть вместе:

Инструкции if и else
$username = "no admin";

if ($username == "Admin") 
{
	echo 'Добро пожаловать на страницу администратора.';
}
else
{
	echo 'Добро пожаловать на страницу пользователя.';
}

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

Все это хорошо, кроме случаев, когда вам требуется проверить несколько условий подряд. Для этого подойдет инструкция elseif. Она позволяет проверять дополнительные условия, пока не будет найдено истинное или достигнут блок else. У каждой инструкции elseif есть собственный блок кода, размещаемый непосредственно после условного выражения инструкции elseif. Инструкция elseif идет после инструкции if и перед инструкцией else, если таковая имеется.

Синтаксис инструкции elseif немного сложнее, но следующий пример поможет вам разобраться в нем:

Проверка нескольких условий
$username = "Guest";

if ($username == "Admin")
{
	echo 'Добро пожаловать на страницу администратора.';
}
elseif ($username == "Guest") 
{
	echo 'Просмотр не доступен.';
}
else 
{
	echo 'Добро пожаловать на страницу пользователя.';
}

Здесь проверяется два условия, и, в зависимости от значения переменной $username, выполняются разные действия. И еще есть возможность что-то сделать, если значение переменной отличается от первых двух.

Тернарный оператор ?:

Оператор ?: – это тернарный (трехместный) оператор, который принимает три операнда. Он работает аналогично инструкции if, но возвращает значение одного из двух выражений. Выражение, которое будет вычисляться, определяется условным выражением. Двоеточие (:) служит разделителем выражений:

(условие) ? вычислить_если_условие_истинно : вычислить_если_условие_ложно;

В примере ниже проверяется значение, и в зависимости от его значения (TRUE или FALSE) возвращаются разные строки:

Создание сообщения с помощью оператора ?:
$logged_in = TRUE;
$user = "Игорь";

$banner = (!$logged_in) ? "Зарегистрируйтесь!" : "С возвращением, $user!";
echo $banner;

Вполне очевидно, что приведенный выше оператор эквивалентен следующему оператору:

Код PHP
$logged_in = TRUE;
$user = "Игорь";

if (!$logged_in)
{
	$banner = "Зарегистрируйтесь!";
}
else
{
	$banner =  "С возвращением, $user!";
}
echo $banner;

Инструкция switch

Инструкция switch сравнивает выражение с несколькими значениями. Как правило, в качестве выражения используется переменная, в зависимости от значения которой должен быть исполнен тот или иной блок кода. Например, представим себе переменную $action, которая может иметь значения «ADD» (добавить), «MODIFY» (изменить) и «DELETE» (удалить). Инструкция switch позволяет легко определить блок кода, который должен исполняться для каждого из этих значений.

Чтобы показать разницу между инструкциями if и switch, выполним проверку переменной на соответствие нескольким значениям. В примере ниже приведен программный код, реализующий такую проверку на базе инструкции if, а в последующем примере – на базе инструкции switch:

Проверка на соответствие одному из нескольких значений (инструкция if)
if ($action == "ADD") {
	echo "Выполнить добавление.";
	echo "Количество инструкций в каждом блоке не ограничено.";
}
elseif ($action == "MODIFY") {
	echo "Выполнить изменение.";
}
elseif ($action == "DELETE") {
	echo "Выполнить удаление.";
}
Проверка на соответствие одному из нескольких значений (инструкция switch)
switch ($action) {
	case "ADD":
		echo "Выполнить добавление.";
		echo "Количество инструкций в каждом блоке не ограничено.";
		break;
	case "MODIFY":
		echo "Выполнить изменение.";
		break;
	case "DELETE":
		echo "Выполнить удаление.";
		break;
}

Инструкция switch берет значение, стоящее рядом с ключевым словом switch, и начинает сравнивать его со всеми значениями, стоящими рядом с ключевыми словами case, в порядке их расположения в программе. Если соответствие не найдено, не исполняется ни один из блоков. Как только совпадение обнаружено, выполняется соответствующий блок кода. Расположенные ниже блоки кода также исполняются – до конца инструкции switch или до ключевого слова break. Это удобно для организации процесса, состоящего из нескольких последовательных шагов. Если пользователь уже проделал некоторые шаги, он сможет продолжить процесс с того места, на котором прервался.

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

Выбор по умолчанию

Если значение условного выражения не совпало ни с одним из предложенных в инструкциях case вариантов, инструкция switch и в этом случае позволяет что-то сделать, примерно как инструкция else конструкции if, elseif, else. Для этого нужно последним вариантом в списке выбора сделать инструкцию default:

Создание сообщения об ошибке с помощью инструкции default
$action = "REMOVE";

switch ($action) {
	case "ADD":
		echo "Выполнить добавление.";
		echo "Количество инструкций в каждом блоке не ограничено.";
		break;
	case "MODIFY":
		echo "Выполнить изменение.";
		break;
	case "DELETE":
		echo "Выполнить удаление.";
		break;
	default:
	    echo "Ошибка: команда $action не допустима, ".
		     "можно использовать только команды ADD, MODIFY и DELETE.";
}

Кроме обычного, инструкция switch поддерживает альтернативный синтаксис – конструкцию из ключевых слов switch/endswitch, определяющих начало и конец инструкции вместо фигурных скобок:

Инструкция switch завершается ключевым словом endswitch
switch ($action):
	case "ADD":
		echo "Выполнить добавление.";
		echo "Количество инструкций в каждом блоке не ограничено.";
		break;
	case "MODIFY":
		echo "Выполнить изменение.";
		break;
	case "DELETE":
		echo "Выполнить удаление.";
		break;
	default:
	    echo "Ошибка: команда $action не допустима, ".
		     "можно использовать только команды ADD, MODIFY и DELETE.";
endswitch;

Прерывание исполнения

Если должен быть исполнен только блок кода, соответствующий определенному значению, то в конце этого блока следует вставить ключевое слово break. Интерпретатор PHP, встретив ключевое слово break, перейдет к исполнению строки, расположенной после закрывающей фигурной скобки инструкции switch (или ключевого слова endswitch). Но если не использовать инструкцию break то проверка продолжается в последующих ветвях case конструкции switch. Ниже показан пример:

Что происходит при отсутствии операторов break
$action="ASSEMBLE ORDER";

switch ($action) {
	case "ASSEMBLE ORDER":
		echo "Собрать заказ.<br>";
	case "PACKAGE":
		echo "Упаковать.<br>";
	case "SHIP":
		echo "Доставить заказчику.<br>";
}

Если переменная $action будет иметь значение «ASSEMBLE ORDER», результат работы этого фрагмента будет следующим:

Собрать заказ.
Упаковать.
Доставить заказчику.

Если предположить, что стадия сборки уже была пройдена, и переменная $action имеет значение «PACKAGE», то будет получен следующий результат:

Упаковать.
Доставить заказчику.

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

Типы данных Циклы Оценить статью: 12345678910 Меня зовут Александр Ерохин. Это моя домашняя страница: Google+.

addphp.ru

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

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

Для работы создадим две переменные — x и y и дадим им любые значения.


<?php
	$x = 10;
	$y = 5;
?>

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


<?php
	$x = 10;
	$y = 5;
	
	$summa = $x + $y;
	$diff = $x - $y;
	$mult = $x * $y;
	$div = $x / $y;
?>

Мы рассмотрели основные операции, но их для работы будет недостаточно, поэтому приведем пример других:

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

К примеру, когда мы хотим узнать остаток от выражения 7/3, если разложим: 7/3 = 3*2 + 1. Суть работы должна быть понятна, 1 — это и есть остаток. Актуально только для целых чисел.


<?php
	$x = 10;
	$y = 5;

	$rem = $x % $y;
?>

Покажу заодно, как можно выводить наши операции на экран.


<?php
	$x = 10;
	$y = 5;
	
	$summa = $x + $y;
	echo "Сумма $x и $y = $summa";
?>

Мы увидим — Cумма 10 и 5 = 15.

Увеличение числа

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


<?php
	$x = 10;
	$x = $x + 10;
	echo "x = $x";
?>

Также есть сокращённая запись, которая эквивалента той, что выше:


<?php
	$x = 10;
	$x += 10;
	echo "x = $x";
?>

Вместо сложения, можно писать что угодна, к примеру умножить — x *= 10.

Инкремент. Увеличение и уменьшения числа на единицу.

В циклах часто требуется увеличить переменную на 1, для этого существует упрощённая запись — инкремент


<?php
	$x = x + 1;
	$x += 1;
        $x++;
	echo "x = $x";
?>

Три записи передают одно и тоже, тоже самое и с уменьшением — декрементом.


<?php
	$x = x - 1;
	$x -= 1;
        $x--;
	echo "x = $x";
?>

Вот и всё, так просто выполняется арифметические операции в php. Читать далее — конструкция if-else: if else примеры в php

daruse.ru

PHP: Оператор присваивания — Manual

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

Базовый оператор присваивания обозначается как «=». На первый взгляд может показаться, что это оператор «равно». На самом деле это не так. В действительности оператор присваивания означает, что левый операнд получает значение правого выражения, (то есть устанавливается значением).

Результатом выполнения оператора присваивания является само присвоенное значение. Таким образом, результат выполнения «$a = 3» будет равен 3. Это позволяет делать трюки наподобие:

<?php

$a 

= ($b = 4) + 5; // $a теперь равно 9, а $b было присвоено 4.?>

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

<?php

$a 

= 3;
$a += 5; // устанавливает $a в 8, как если бы мы написали: $a = $a + 5;
$b = "Привет";
$b .= "-привет!"; // устанавливает $b в "Привет-привет!",  как и $b = $b . "-привет!";?>

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

Исключением из обычного для PHP способа присваивания по значению являются объекты (object), которые присваиваются по ссылке. Принудительно скопировать объекты по значению можно с помощью специального ключевого слова clone.

Присваивание по ссылке

Присваивание по ссылке также поддерживается, для него используется синтаксис $var = &$othervar;. Присваивание по ссылке означает, что обе переменные указывают на одни и те же данные и никакого копирования не происходит.

Пример #1 Присваивание по ссылке

<?php
$a = 3;
$b = &$a; // $b - это ссылка на $aprint "$a\n"; // печатает 3
print "$b\n"; // печатает 3$a = 4; // меняем $aprint "$a\n"; // печатает 4
print "$b\n"; // также печатает 4, так как $b является ссылкой на $a,
              // а значение переменной $a успело измениться
?>

Оператор new автоматически возвращает ссылку, поэтому присваивание результата операции new по ссылке начиная с PHP 5.3 генерирует ошибку уровня E_DEPRECATED, а в более ранних версиях — ошибку уровня E_STRICT.

Например, следующий код выдаст предупреждение:

<?php
class C {}/* Следующая строка сгенерирует следующее сообщение об ошибке:
 * Deprecated: Assigning the return value of new by reference is deprecated in...
 */
$o = &new C;
?>

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

www.php.net

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

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

В наличии PHP есть 6 побитовых операторов:

Побитовое И (&)

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

Пример работы оператора «Побитовое И»:

Тоже самое только на примере PHP:


<?php

  $x = 3;         // ...0011
  $y = 5;         // ...0101

  echo $x & $y;   // ...0001 (1)

?>

Побитовое ИЛИ (|)

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

Пример работы оператора «Побитовое И»:

Тоже самое только на примере PHP:


<?php

  $x = 3;         // ...0011
  $y = 5;         // ...0101

  echo $x | $y;   // ...0111 (7)

?>

Исключающее ИЛИ (^)

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

Пример работы оператора «Исключающее ИЛИ»:

Искл. ИЛИ 0011
0101
0110

Тоже самое только на примере PHP:


<?php

  $x = 3;         // ...0011
  $y = 5;         // ...0101

  echo $x ^ $y;   // ...0110 (6)

?>

Побитовое НЕ (~)

Оператор ~ (побитовое НЕ) представляет собой унарный оператор, указываемый перед своим единственным операндом. Он выполняет инверсию всех битов операнда. Из-за способа представления целых со знаком в PHP применение оператора ~ к значению эквивалентно изменению его знака и вычитанию 1.

Пример работы оператора «Побитовое НЕ»:

Тоже самое только на примере PHP:


<?php

  $y = 5;     // ...0101

  echo ~$y;   // ...1010 (-6)

?>

Осталось рассмотреть два оператора — сдвиг влево и сдвиг вправо. Эти операторы можно использовать для быстрого умножения и деления (каждая позиция подразумевает «умножение/деление на 2»).

Сдвиг влево (<<)

Оператор << сдвигает все биты в первом операнде влево на количество позиций, указанное во втором операнде, который должен быть целым числом. Сдвиг значения влево на одну позицию эквивалентен умножению на 2, на две позиции — умножению на 4 и т.д.

Пример работы оператора «Сдвиг влево»:


<?php

  $y = 5;         // 000000101

  // тоже самое что и 5 * 4
  echo $y << 2;   // 000010100 (20)

?>

Сдвиг вправо (>>)

Оператор >> сдвигает все биты в первом операнде вправо на количество позиций, указанное во втором операнде, который должен быть целым числом. Сдвиг значения вправо на одну позицию эквивалентен делению на 2, на две позиции — делению на 4 и т.д.

Пример работы оператора «Сдвиг вправо»:


<?php

  $y = 20;         // 000010100

  // тоже самое что и 20 / 4
  echo $y >> 2;   // 000000101 (5)

?>

Помимо описанных операторов, в PHP также предусмотрены и сокращенные формы записи побитовых операторов.

Сокращенная запись побитовых операторов
ОператорОписаниеПримерСокращенная форма записи
&=Присваивает левому операнду результат работы Побитового И$x = $x & $y$x &= $y
|=Присваивает левому операнду результат работы Побитового ИЛИ$x = $x | $y$x |= $y
^=Присваивает левому операнду результат работы Исключающего ИЛИ$x = $x ^ $y$x ^= $y
>>=Присваивает левому операнду результат работы оператора Сдвига вправо$x = $x >> 6$x >>= 6
<<=Присваивает левому операнду результат работы оператора Сдвига влево$x = $x << 6$x <<= 6

С этой темой смотрят:

puzzleweb.ru

Операции с переменными в PHP.


Операторы PHP это – не что иное, как знаки  деления, вычитания, сравнения и т.д., т.е. то, что позволяет проводить какие-то операции с переменными. В PHP существует несколько групп операторов:

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

Сразу обращу Ваше внимание на то, что (=) в PHP вовсе не означает «равно», т.е. это – не оператор сравнения, это — оператор присваивания. Иными словами, первый операнд присваивает значение второго.

$a = 1;

Здесь переменная “a” присвоила себе значение 1.

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

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

$a<$b$a меньше $b
$a>$b$a больше $b
$a<=$b$a меньше или равно $b
$a>=$b$a больше или равно $b
$a==$b$a равно $b
$a!=$b$a не равно $b
$a===$b$a тождественно равно $b.  Т.е. $a  равно $b не только по значению, но и по типу значения
$a!===$b$a тождественно не равно $b

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

Ну тут всё просто, вспоминаем школьную математику в начальных классах.

+сложение
вычитание
*умножение
/деление
%остаток от деления, !!! не процент

Пример:

<?php
$a=5;
$b=7;
$result=$a+$b;
echo $result;
?>

Результатом в браузере, как Вы уже догадались, будет число 12.

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

Инкремент – это увеличение значения переменной на единицу.

Префиксный инкремент ставится перед переменной.

<?php
$a = 7;
echo ++$a.»</br>»;//мы увидим цифру 8
?>

Постфиксный инкремент ставится после переменной.

<?php
$a = 7;
echo $a++.»</br>»;//мы увидим цифру 7
echo $a.»</br>»;//мы увидим цифру 8.
?>

Декремент – это уменьшение значения переменной на единицу.

<?php
//Префиксный декремент
$a = 7;
echo —$a.»</br>»;//мы увидим цифру 6
?>
<?php
//Постфиксный декремент
$a = 7;
echo $a—.»</br>»;//мы увидим цифру 7
echo $a.»</br>»;//мы увидим цифру 6.
?>

Оператор конкатенации.

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

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

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

$a&&$bЛогическое «и»Если $a и $b истинны, то выражение истинно
$a||$bЛогическое «или»Если одна из переменных истинна, то выражение истинно
!$aОтрицаниеЕсли $a не истинна, то выражение истинно.

www.fly-webmaster.ru