В этой главе мы обсудим использование различных операторов в PHP.
В PHP оператор присваивания = используется для присвоения значения переменной.
В PHP арифметический оператор + используется для сложения значений.
оператор | имя | описывать | Пример | результат |
---|---|---|---|---|
х + у | добавлять | сумма х и у | 2+2 | 4 |
х-у | уменьшать | разница между х и у | 5-2 | 3 |
х*у | брать | произведение x и y | 5*2 | 10 |
х/у | удалять | Частное x и y | 15/5 | 3 |
х % у | По модулю (остаток от деления) | Остаток от деления x на y | 5% 210% 810% 2 | 120 |
-х | отрицать | отрицать х | -2 | -2 |
а.б. | сопоставлять | Объединить две строки | «Привет». | Хиха |
Следующие примеры демонстрируют разные результаты при использовании разных арифметических операторов:
<?php $х = 10 ; $ у = 6 ; ( $x + $ y ) // Вывод 16 эхо ' <br> ' ; // разрыв строки эхо ( $x - $y ) // Вывод 4 ; эхо ' <br> ' ; // разрыв строки эхо ( $x * $y ) // Вывод 60 ; эхо ' <br> ' ; // разрыв строки эхо ( $x / $y ) // Вывод 1,6666666666667 эхо ' <br> ' ; // разрыв строки эхо ( $x % $y ) // Вывод 4 ; эхо ' <br> ' ; // разрыв строки эхо - $х ? >
В версии PHP7+ появился новый оператор целочисленного деления intdiv() , примеры использования:
<?php var_dump ( intdiv ( 10 , 3 ) ) ;
В приведенном выше примере выводится:
интервал (3)
В PHP основным оператором присваивания является «=". Это означает, что левому операнду присвоено значение правого выражения. То есть значение «$x = 5» равно 5.
оператор | Эквивалентно | описывать |
---|---|---|
х = у | х = у | Левому операнду присваивается значение правого выражения. |
х += у | х = х + у | добавлять |
х -= у | х = х - у | уменьшать |
х*=у | х = х * у | брать |
х /= у | х = х/у | удалять |
х%=у | х = х % у | По модулю (остаток от деления) |
а .= б | а = а. | Объединить две строки |
Следующие примеры демонстрируют разные результаты с использованием разных операторов присваивания:
<?php $х = 10 ; эхо $x ; // Вывод 10 $у = 20 ; $у + = 100 ; $y // Вывод 120 $z = 50 ; $z - = 25 ; $z ; // Вывод 25 $я = 5 ; $я * = 6 ; $i ; // Вывод 30 $j = 10 ; $j / = 5 ; $j ; // Вывод 2 $к = 15 ; $к % = 4 ; $к ; // Вывод 3 ?>
Следующие примеры демонстрируют один и тот же результат с использованием разных строковых операторов:
<?php $a = " Привет " ; $b = $ a " мир ! " ; $b ; // Вывод Привет, мир! $x = " Привет " ; $x . = " мир! " ; $x ; // Вывод Привет, мир! ?>
оператор | имя | описывать |
---|---|---|
++х | предварительное приращение | Добавьте 1 к x и верните x |
х++ | пост-инкремент | Верните x, затем добавьте 1 к x |
--х | Предварительный декремент | Уменьшите x на 1, затем верните x |
х -- | Уменьшается после | Возвращает x, затем уменьшает x на 1 |
Следующий пример демонстрирует результаты использования операторов увеличения/уменьшения:
<?php $x = 10 ; эхо ++ $x // Вывод 11 $у = 10 ; эхо $y ++; // Вывод 10; $z = 5 ; эхо -- $z // Выход 4; $ я = 5 ; эхо $i --; // Вывод 5 ?>
Операторы сравнения позволяют сравнивать два значения:
оператор | имя | описывать | Пример |
---|---|---|---|
х == у | равный | Возвращает true, если x равно y | 5==8 возвращает ложь |
х === у | абсолютно равен | Возвращает true, если x равен y и они одного типа. | 5==="5" возвращает ложь |
х != у | не равен | Возвращает true, если x не равен y | 5!=8 возвращает истину |
х <> у | не равен | Возвращает true, если x не равен y | 5<>8 возвращает истину |
х !== у | Определенно не равен | Возвращает true, если x не равен y или они не одного типа. | 5!=="5" возвращает истину |
х > у | больше, чем | Возвращает true, если x больше y | 5>8 возвращает ложь |
х < у | меньше, чем | Возвращает true, если x меньше y | 5<8 возвращает истину |
х >= у | Больше или равно | Возвращает true, если x больше или равен y | 5>=8 возвращает ложь |
х <= у | меньше или равно | Возвращает true, если x меньше или равен y | 5<=8 возвращает истину |
Следующие примеры демонстрируют разные результаты с использованием некоторых операторов сравнения:
<?php $x = 100 ; $ y = " 100 " ; var_dump ( $x == $y ) ; " <br> " ; var_dump ( $x === $ y ) ; " <br> " ; var_dump ( $x ! = $y ) ; " <br> " ; var_dump ( $x ! == $y ) ; " <br> " ; $ a = 50 ; $ b = 90 ; $ a > $ b ; " <br> " ; var_dump ( $a < $b ) ? >
оператор | имя | описывать | Пример |
---|---|---|---|
х и у | и | Возвращает true, если и x, и y истинны | x=6y=3(x < 10 и y > 1) возвращает true |
х или у | или | Возвращает true, если хотя бы одно из x и y истинно | x=6y=3(x==6 или y==5) возвращает true |
х х или у | исключающее ИЛИ | Если один и только один из x и y верен, верните true | x=6y=3(x==6 xor y==3) возвращает false |
х && у | и | Возвращает true, если и x, и y истинны | x=6y=3(x < 10 && y > 1) возвращает true |
х || у | или | Возвращает true, если хотя бы одно из x и y истинно | x=6y=3(x==5 || y==5) возвращает false |
!х | Нет | Если x не верно, верните true | x=6y=3!(x==y) возвращает true |
оператор | имя | описывать |
---|---|---|
х + у | собирать | набор x и y |
х == у | равный | Возвращает true, если x и y имеют одну и ту же пару ключ/значение. |
х === у | Равенство | Возвращает true, если x и y имеют одинаковые пары ключ/значение в том же порядке и типе. |
х != у | Не равно | Возвращает true, если x не равен y |
х <> у | Не равно | Возвращает true, если x не равен y |
х !== у | Не идентичны | Возвращает true, если x не равен y |
Следующие примеры демонстрируют разные результаты при использовании некоторых операторов массива:
<?php $x = массив ( « a » => « красный » , « b » => « зеленый » ) ; $ y = массив ( « c » => « синий » , « d » => « желтый » ) ; = $x + $y ; // Объединяем массивы $x и $y var_dump ( $ z ) ; var_dump ( $ x == $ y ) ; var_dump ( $ x ! = $ y ) ; х !== $y ) ? >;
Другой условный оператор — это оператор «?:» (или тройной).
(выражение1) ? (выражение2): (выражение3)
Значением, когда выражение1 оценивается как ИСТИНА, является выражение2, а когда выражение1 оценивается как ЛОЖЬ, значением является выражение3.
Начиная с PHP 5.3, среднюю часть тернарного оператора можно опустить. Выражение выражение1 ?:выражение3 возвращает выражение1, если выражение1 имеет значение ИСТИНА, и выражение3 в противном случае.
В следующем примере считается, что запрос $_GET содержит значение пользователя. Если это так, возвращается $_GET['user'], в противном случае ничего не возвращается:
<?php $ test = ' Учебное пособие по программированию ' // Обычный метод написания $username = isset ( $test ) ? $ test : ' никто ' ; $username , PHP_EOL // метод написания версии PHP 5.3+ ; $username = $test ? : ' никто ' ; $имя_пользователя , PHP_EOL ? >
Учебники для программистов Учебники для программистов
Примечание. PHP_EOL — это символ новой строки, совместимый с более крупными платформами.
В версии PHP7+ есть дополнительный оператор объединения ??
. Пример следующий:
<?php // Если $_GET['user'] не существует, возвращаем 'никто', иначе возвращаем значение $_GET['user'] $username = $_GET [ ' user ' ] ?? ' никто ' // Аналогичный тернарный оператор $username = isset ( $_GET [ ' user ' ] ) ? $_GET [ ' user ' ] : ' никто ' ? >
PHP7+ поддерживает комбинированные операторы сравнения, примеры следующие:
<?php // Целочисленный тип эхо 1 <=> 1 ; // 0 эхо 1 <=> 2 ; // -1 эхо 2 <=> 1 ; // 1; // Тип с плавающей запятой эхо 1.5 <=> 1.5 // 0 ; эхо 1.5 <=> 2.5 // -1 ; эхо 2 .5 <=> 1 .5 ; // 1 // Нить эхо " а " <=> " а " // 0 ; эхо " а " <=> " б " // -1 ; эхо " б " <=> " а " // 1 ?>
В следующей таблице перечислены операторы от самого высокого до самого низкого приоритета. Операторы в одной строке имеют одинаковый приоритет, а направление их объединения определяет порядок вычислений.
Примечание : Слева = слева направо, справа = справа налево.
Направление привязки | оператор | Дополнительная информация |
---|---|---|
никто | клонировать новый | клон и новый |
Левый | [ | множество() |
верно | ++ -- ~ (int) (float) (строка) (массив) (объект) (bool) @ | Типы и приращение/уменьшение |
никто | экземпляр | тип |
верно | ! | Логические операторы |
Левый | */% | арифметические операторы |
Левый | + – . | Арифметические и строковые операторы |
Левый | << >> | Битовые операторы |
никто | == != === !== <> | оператор сравнения |
Левый | & | Битовые операторы и ссылки |
Левый | ^ | Битовые операторы |
Левый | | | Битовые операторы |
Левый | && | Логические операторы |
Левый | || | Логические операторы |
Левый | ?: | тернарный оператор |
верно | = += -= *= /= .= %= &= |= ^= <<= >>= => | оператор присваивания |
Левый | и | Логические операторы |
Левый | исключающее ИЛИ | Логические операторы |
Левый | или | Логические операторы |
Левый | , | Используется во многих местах |
По приоритету операторов or, ||, && и and — все логические операторы с одинаковым эффектом, но их приоритеты различны.
<?php // Приоритет: && > = > и // Приоритет: || > = > или $а = 3 ; $б = ложь ; $с = $а; или $b ; var_dump ( $c ) ; // $c здесь целое значение 3, а не логическое значение true $d = $a || $b ; var_dump ( $d ) // $d — логическое значение true ; ?>
Выходной результат приведенного выше примера:
int(3)bool(истина)
Мы четко указываем порядок операций посредством парных скобок, а не полагаемся на приоритет операторов и ассоциативность, которые обычно могут повысить читаемость кода.
<?php // Операция с приоритетом скобок $а = 1 ; $ b = 2 ; $c = 3 ; $d = $a + $b * $c ; $д ; эхо " n " ; $e = ( $a + $b ) * $c // Используйте круглые скобки ; эхо $ е ; эхо " н " ; >
Выходной результат приведенного выше примера:
79