Ключевые PHP-операторы
Операторы — это символы, которые вы можете использовать для манипулирования переменными. Операторы в PHP работают почти по такому же принципу, что и в математике.
Оператор присваивания
Первый оператор, с которым вы должны познакомиться, — это оператор присваивания (“=”).
Обратите внимание: это не то же самое, что оператор равенства.
$x = 55 означает “x присваивается значение 55”, а не “x равно 55”.
Оператор равенства выражается через двойной знак равенства (“==”).
Если вы хотите получить истинное или ложное значение x=55, вам нужно написать следующее: $x == 55;
Оператор присваивания используется для присвоения значения определенным переменным.
Оператор Join
Еще одним часто используемым оператором является оператор присоединения (Join) или конкатенации.
В основном он используется для соединения двух и более строк вместе.
Пример:
$a= "apple";
$b = "pie";
$c = $a.$b;
echo $c;
?>
Результат:
Оператор Join обычно используется для присоединения одной строки к другой.
Сокращение оператора Join
Существует специальный синтаксис для написания функции Join. Вместо того чтобы повторять одну из переменных с обеих сторон, вы можете просто написать $a .= $b, что означает “присоединить $b к $a”.
$a .= $b значит $a = $a.$b;
Арифметические операторы
Арифметические операторы в языке PHP работают практически так же, как и в математике.
Они используются между двумя переменными для выполнения определенных математических операций.
Поскольку это арифметические операторы, обе переменные должны быть числами.
Пример:
$a = 100;
$b = 200;
$result = $a+$b;
echo $result;
?>
Результат:
Они работают по тому же принципу, что и в математике.
Пример:
$a = 100;
$b = 9;
$result = $a-$b;
echo $result;
echo "
";
$result = $a*$b;
echo $result;
echo "
";
$result = $a/$b;
echo $result;
?>
Результат:
Вы также можете использовать “ — ” для присвоения отрицательного числа.
Таким образом, операторы языка PHP и в самом деле не слишком отличаются от математических.
Единственный оператор, который, возможно, покажется вам странным, — это оператор модулей %. Он означает “остаток от”: так, $a%$b означает “то, что остается после деления $a на $b”.
echo 27%10;
echo "
";
echo 27%2;
echo "
";
echo 27%9;
?>
Интересное (но несущественное) примечание: технически вы можете использовать арифметические операторы со строками. Но поскольку PHP преобразует строку в число, с практической точки зрения это совершенно бессмысленно.
Объединение присваиваний
При желании вы можете объединить два оператора присваивания вместе.
Пример:
$a = 5;
$b = 10;
$c = $b($a=10);
$c == 20;
?>
Наша цель в этом случае — сохранить строку.
В дополнение к простому присваиванию можно использовать так называемые комбинированные операторы присваивания. Это сокращенные варианты присваивания некоторых операторов.
Например, если мы хотим увеличить значение $a на 7, мы можем написать $a = $a+7 ; но можно также использовать комбинированное присваивание $a += 7 . Это то же самое, что $a = $a+7 .
Еще одно действие, которое можно сделать с переменными, — это увеличить или уменьшить их вручную. Это можно сделать, добавив a++ или $a —перед или после переменной.
С помощью знаков “+” можно увеличить значение переменной на 1.
Это эквивалентно $a = $a + 1 ;
Есть ли разница, где ставить знаки ++ или — ? Да, есть.
Если вы ставите плюсы перед переменной, то это добавляет 1 к переменной до того, как ваш код начнет с ней работать.
Если вы ставите плюсы после переменной, то вы увеличиваете значение переменной только после работы с ней.
Echo $a++ сначала покажет 17, а затем увеличит значение $a с 17 до 18.
Echo ++$a сначала увеличит значение $a до 18, а затем выведет его на экран.
Как вы уже, наверное, догадались, тот же принцип аналогичен и для- -, с той лишь разницей, что вы уменьшаете, а не увеличиваете значение переменной.
Оператор ссылок
Используя этот оператор, мы как бы говорим: “Я отдаю вам свою переменную, и теперь все, чему вы будете равны, буду равен и я”.
$a = 7;
$b = &$a;
$b = 11;
?>
Операторы сравнения
Оператор равенства
Как уже говорилось выше при рассмотрении оператора присваивания, “==” — это способ проверки, равно ли что-то чему-то другому.
Пример:
$a = 100;
$b = 100;
echo $a==$b;?>
Результат:
Тут легко допустить ошибку и случайно поставить “=”.
Проверка типа переменной
PHP по умолчанию содержит ряд функций, позволяющих проверить или устанавливать тип переменной.
Две наиболее важные из них — gettype() и settype() .
Их названия говорят сами за себя.
Просто введите переменную в gettype() — и получите ее тип.
Изменить тип переменной можно с помощью settype() .
Пример:
$a = 71;
echo gettype($a);
echo "
";
settype($a, "double");
echo gettype($a);
?>
Результат:
- Как использовать PHP для вывода данных?
- PHP: типы операторов
- Как находить уязвимости в коде на PHP?
Операторы
Оператором называется нечто, принимающее одно или более значений (или выражений, если говорить на жаргоне программирования), и вычисляющее новое значение (таким образом, вся конструкция может рассматриваться как выражение).
Операторы можно сгруппировать по количеству принимаемых ими значений. Унарные операторы принимают только одно значение, например, ! (оператор логического отрицания) или ++ (инкремент). Бинарные операторы принимают два значения; это, например, знакомые всем арифметические операторы + (плюс) и — (минус), большинство поддерживаемых в PHP операторов входят именно в эту категорию. Ну и, наконец, есть всего один тернарный оператор, ? : , принимающий три значения, обычно его так и называют — «тернарный оператор» (хотя, возможно, более точным названием было бы «условный оператор»).
Полный список PHP-операторов вы можете найти в разделе «Порядок выполнения операторов». В этом разделе также описан порядок выполнения операторов и их ассоциативность, которые точно определяют, как вычисляются выражения с несколькими разными операторами.
User Contributed Notes 9 notes
19 years ago
of course this should be clear, but i think it has to be mentioned espacially:
AND is not the same like &&
the second
a and (b or c)
’cause || has got a higher priority than and, but less than &&
of course, using always [ && and || ] or [ AND and OR ] would be okay, but than you should at least respect the following:
the first code will set $a to the result of the comparison $b with $c, both have to be true, while the second code line will set $a like $b and THAN — after that — compare the success of this with the value of $c
maybe usefull for some tricky coding and helpfull to prevent bugs 😀
3 years ago
Operator are used to perform operation.
Operator are mainly divided by three groups.
1.Uniary Operators that takes one values
2.Binary Operators that takes two values
3.ternary operators that takes three values
Operator are mainly divided by three groups that are totally seventeen types.
1.Arithmetic Operator
+ = Addition
— = Subtraction
* = Multiplication
/ = Division
% = Modulo
** = Exponentiation
2.Assignment Operator
= null coalescing
14.Clone new Operator
clone new = clone new
15.yield from Operator
yield from = yield from
16.yield Operator
yield = yield
17.print Operator
print = print
22 years ago
Other Language books’ operator precedence section usually include «(» and «)» — with exception of a Perl book that I have. (In PHP «<" and ">» should also be considered also). However, PHP Manual is not listed «(» and «)» in precedence list. It looks like «(» and «)» has higher precedence as it should be.
">
Note: If you write following code, you would need «()» to get expected value.
$bar = true ;
$str = «TEST» . ( $bar ? ‘true’ : ‘false’ ) . «TEST» ;
?>
Without «(» and «)» you will get only «true» in $str.
(PHP4.0.4pl1/Apache DSO/Linux, PHP4.0.5RC1/Apache DSO/W2K Server)
It’s due to precedence, probably.
15 years ago
The variable symbol ‘$’ should be considered as the highest-precedence operator, so that the variable variables such as $$a[0] won’t confuse the parser. [http://www.php.net/manual/en/language.variables.variable.php]
4 years ago
If you use «AND» and «OR», you’ll eventually get tripped up by something like this:
$this_one = true ;
$that = false ;
$truthiness = $this_one and $that ;
?>
Want to guess what $truthiness equals?
If you said «false» . it’s wrong!
«$truthiness» above has the value «true». Why? «=» has a higher precedence than «and». The addition of parentheses to show the implicit order makes this clearer:
( $truthiness = $this_one ) and $that ;
?>
If you used «&&» instead of and in the first code example, it would work as expected and be «false».
This also works to get the correct value, as parentheses have higher precedence than » default»>$truthiness = ( $this_one and $that );
?>
16 years ago
Note that in php the ternary operator ?: has a left associativity unlike in C and C++ where it has right associativity.
You cannot write code like this (as you may have accustomed to in C/C++):
$a = 2 ;
echo (
$a == 1 ? ‘one’ :
$a == 2 ? ‘two’ :
$a == 3 ? ‘three’ :
$a == 4 ? ‘four’ : ‘other’ );
echo «\n» ;
// prints ‘four’
?>
You need to add brackets to get the results you want:
echo ( $a == 1 ? ‘one’ :
( $a == 2 ? ‘two’ :
( $a == 3 ? ‘three’ :
( $a == 4 ? ‘four’ : ‘other’ ) ) ) );
echo «\n» ;
//prints ‘two’
?>
16 years ago
The scope resolution operator . which is missing from the list above, has higher precedence than [], and lower precedence than ‘new’. This means that self::$array[$var] works as expected.
18 years ago
A quick note to any C developers out there, assignment expressions are not interpreted as you may expect — take the following code ;-
$a =array( 1 , 2 , 3 );
$b =array( 4 , 5 , 6 );
$c = 1 ;
print_r ( $a ) ;
?>
This will output;-
Array ( [0] => 1 [1] => 6 [2] => 3 )
as if the code said;-
$a[1]=$b[2];
Under a C compiler the result is;-
Array ( [0] => 1 [1] => 5 [2] => 3 )
as if the code said;-
$a[1]=$b[1];
It would appear that in php the increment in the left side of the assignment is processed prior to processing the right side of the assignment, whereas in C, neither increment occurs until after the assignment.
2 years ago
A variable is a container that contain different types of data and the operator operates a variable correctly.
- Справочник языка
- Основы синтаксиса
- Типы
- Переменные
- Константы
- Выражения
- Операторы
- Управляющие конструкции
- Функции
- Классы и объекты
- Пространства имён
- Перечисления
- Ошибки
- Исключения
- Fibers
- Генераторы
- Атрибуты
- Объяснение ссылок
- Предопределённые переменные
- Предопределённые исключения
- Встроенные интерфейсы и классы
- Предопределённые атрибуты
- Контекстные опции и параметры
- Поддерживаемые протоколы и обёртки
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
PHP: Операторы сравнения
В этой главе описаны операторы сравнения. Эти операторы проверяют равенство (такое как равно, меньше, тождественно равно и т.д.) между двумя значениями и возвращают true или false в зависимости от того, как соотносятся операнды. Операторы сравнения всегда возвращают логические значения, и эти значения чаще всего применяются в таких операторах как if, while или for для управления ходом исполнения программы.
Операторы сравнения
Пример Название Результат $i == $y Равно TRUE если $i равно $y после преобразования типов данных. $i === $y Идентично TRUE если $i равно $y и имеет тот же тип данных. $i != $y Не равно TRUE если $i не равно $y после преобразования типов данных. $i <> $y Не равно TRUE если $i не равно $y после преобразования типов данных. $i !== $y Не идентично TRUE если $i не равно $y или они разных типов. $i < $y Меньше TRUE если $i строго меньше $y. $i > $y Больше TRUE если $i строго больше $y. $i Меньше или равно TRUE если $i меньше или равно $y. $i >= $y Больше или равно TRUE если $i больше или равно $y. Примечание: если попытаться вывести результат операции сравнения на экран, значение true отобразится в окне браузера как 1. Значение false соответствует числу 0 и не отображается на экран (в принципе это вы должны помнить из описания типа boolean ). Если вы хотите увидеть результат в виде true или false используйте функцию var_dump() .
Так же стоит отметить: если сравнивается строка с числом или две строки, которые содержат числа, каждая строка будет преобразована в число, и сравниваться они будут как числа.
Оператор == (равенства)
Оператор == ( равенства ) принимает операнды любого типа, если два операнда равны, возвращается значение true , в противном случае — false .
Если операнды имеют разные типы данных, PHP попытается преобразовать их перед сравнением к одному типу, например такое выражение ‘4’ == 4 вернёт значение true , так как PHP автоматически приведет сравниваемые значения к одному типу данных. Аналогично, выражение $a == 1 вернёт значение true , если переменная $a содержит значение 1. Если требуется избежать неявного преобразования типов при сравнении, то следует использовать оператор идентичности, который будет рассмотрен далее.
Оператор === (идентичности)
Оператор === ( идентичности ) принимает операнды любого типа и возвращает true , если их значения совпадают (равны), и false , если они различны. Чем же он отличается от оператора равенства? Оператор идентичности проверяет два операнда на «идентичность», руководствуясь строгим определением совпадения, это означает, что помимо равенства самих значений операндов, они также должны относиться к одному и тому же типу данных. В качестве примера рассмотрим такое выражение, как 5 === ‘5’ , результатом этого выражения будет значение false , так как значение слева является числом, а значение справа — строкой, то есть у этих значений разные типы данных. Запомните, что операторы == и === означают «равно» и «идентично/тождественно равно» .
Оператор != или <> (неравенства)
Оператор неравенства имеет два вида: != и <> . Он является противоположностью оператора == и возвращает true , в том случае, если значения операндов не равны. Оператор неравенства возвращает false только в том случае, если значения по обе стороны от него равны друг другу.
$var2); // вернет false var_dump('Home' <> 'home'); // вернет true ?>Оператор !== (неидентичности)
Оператор !== ( неидентичности ) выполняет проверку, в точности противоположную оператору === . Он возвращает true , если значения операндов не равны друг другу или не относиться к одному и тому же типу данных. В качестве примера рассмотрим следующее выражение: 7 !== ‘7’ , оператор «неидентичности» вернет true , потому что значение слева является числом, а значение справа строкой, то есть они относятся к разным типам данных. Отсюда легко будет запомнить, что операторы != и !== означают «не равно» и «не идентично/тождественно не равно».
Оператор > (больше)
При использовании оператора > ( больше ) сравнение возвращает true только в том случае, если значение слева от оператора больше значения справа от него. Как и другие операторы, оператор > работает не только с числовыми значениями, но и со строковыми. Но как одна строка может быть больше другой?
При работе со строками буква в нижнем регистре больше буквы в верхнем регистре. При сравнении строк PHP сначала проверяет на несовпадение первую букву строки. Если разницы не обнаруживается, происходит переход к следующему символу и т.д., пока не будет найдено различие или не будет достигнут конец строки. Если два значения с каждой из сторон оператора > будут равны, оператор также вернет false .
3); // вернет true var_dump('Hi' > 'hi'); // вернет false var_dump(1 > 1); // вернет false ?>Оператор < (меньше)
Оператор >= (больше или равно)
Оператор >= ( больше или равно ) немного отличается от тех операторов сравнения, которые рассматривались ранее. Он добавляет возможность равенства двух значений по обе стороны от него, то есть, чтобы было возвращено true , значение слева от оператора должно быть больше или равно значению справа от него. Оператор «больше или равно» возвращает false , только если значение слева от него меньше, чем значение справа.
= 5); // вернет true var_dump('hi' >= 'hi'); // вернет true var_dump(1 >= 2); // вернет false ?>Оператор
С этой темой смотрят:
- Выражения и операторы
- Арифметические операторы
- Логические операторы
- Побитовые операторы
Операторы в PHP
Операторы — одна из важнейших и базовых тем. Почти все выражения так или иначе содержат их в себе. Без операторов в PHP не было бы возможности делать что-либо с данными вообще, так же, как, например, в математике. Поэтому отнеситесь к данной теме серьёзно, а в конце обязательно сделайте домашнее задание — только практика, только хардкор.
Но прежде чем перейти к изучению операторов, я предлагаю изучить функцию var_dump(). Она позволяет вывести тип и значение чего-либо.
Или же переменной:
- PHP программист От 150000₽
- PHP/Golang developer До 2500$
- Стажер \ Джун PHP До 20000₽
- Senior / Middle PHP Developer | Laravel 180000₽ — 250000₽
- Разработчик PHP (middle+) 110000₽ — 130000₽
2 меньше 4. Результат – истина. Всё верно.
Поздравляю, теперь мы в любой момент можем узнать, что находится в переменной, или же сразу узнать результат какого-либо выражения. Давайте теперь вернёмся к нашей основной теме урока.
Тема операторов очень плотно переплетается с темой типов данных. Как мы с вами уже говорили на прошлом уроке, тип данных, который получится в результате какого-либо выражения, будет зависеть от оператора. И, например, результатом сложения при использовании оператора плюса всегда будет число.Приоритет операторов
Начнём с того, что операторы имеют разный приоритет. Как, например, в математике: оператор умножения будет более приоритетным по сравнению с оператором сложения:
- PHP программист От 150000₽
- PHP/Golang developer До 2500$
- Стажер \ Джун PHP До 20000₽
- Senior / Middle PHP Developer | Laravel 180000₽ — 250000₽
- Разработчик PHP (middle+) 110000₽ — 130000₽
Приоритетом можно управлять с помощью круглых скобок, например:
Ну и тут думаю всё понятно:
В целом приоритеты операторов довольно предсказуемы.
Приоритет всех операторов в PHP можно посмотреть в официальной документации.Типы операторов в PHP
А теперь давайте рассмотрим разные типы операторов
Арифметические операторы
Тут нас ждут знакомые со школьной скамьи операторы:
Многие впадают в ступор от оператора остатка от деления. Тут всё просто. В нашем случае мы вычисляем остаток от деления 6 на 4. Нацело не делится, целая часть – 1, и 2 в остатке. Ещё несколько аналогичных примеров для понимания:
Думаю, арифметические операторы больше не требуют дополнительных разъяснений.
Оператор присваивания
С ним мы уже работали. Используется для присваивания какого-либо значения в переменную.
Классический пример:Ок, тут всё просто. А как на счёт такого:
Здесь переменной $x присвоили значение 5, а затем умножили на 2 и положили результат выражения в переменную $result. Да, в PHP так тоже можно, хоть и не приветствуется, так как код выглядит довольно запутанно.
Помимо этого есть так называемые сокращенные, комбинированные операторы присваивания.
Например, в комбинации с оператором сложения:$y += $xможно было бы записать как
$y = $y + $xТаким образом, если что-то совершается с левым операндом в исходном виде, то можно использовать эти сокращённые варианты. И да, это применяется и выглядит весьма элегантно, стоит к ним привыкать уже сейчас. Давайте рассмотрим ещё несколько примеров:
И с конкатенацией строк:
Операторы сравнения
Ну тут из названия понятно, что это за операторы и для чего они предназначены. Результатом их работы всегда будет булево значение (true или false).
Начнём с операторов равенства/неравенства:
boolean true
boolean false
boolean false
boolean trueДавайте поясню. Оператор == приводит операнды к одному типу и после сравнивает их значения. Так строка ‘2’ была преобразована к числу и значения оказались равными.
Оператор тождественного равенства === не выполняет приведения типов и сравнивает сначала то, что типы значений идентичны, например, целые числа, а затем сравнивает их значения. И если они одинаковы, то только в таком случае возвращает true.Оператор неравенства != приводит типы к одному и сравнивает значения. Если они не равны, вернёт true, иначе – false.
Оператор тождественного неравенства !== сначала сравнивает типы, если они не идентичны, например, строка и число, то вернёт true, иначе сравнит их значения. Если они не равны, вернёт true, иначе – false.Также к операторам сравнения относятся:
$y); // $x больше $y var_dump($x < $y); // $x меньше $y var_dump($x >= $y); // $x больше или равно $y var_dump($xboolean false
boolean true
boolean false
boolean trueТут всё очевидно, не будем задерживаться.
Spaceship
А теперь рассмотрим оператор сравнения, который появился в PHP7. Это спейсшип (или космический корабль) . Похож на корабль штурмовиков из звёздных войн, не так ли?
Логика у этого оператора следующая:
$a $b
Если $a > $b, вернёт 1
Если $a == $b, вернёт 0
Если $a < $b, вернёт -1Давайте рассмотрим пример:
4); var_dump(2 2); var_dump(5 3);Данный оператор был введён для использования в функциях сортировки. Эту тему мы пока поднимать не будем, просто знайте, что вот такой интересный оператор появился в последней версии PHP.
Инкремент и декремент
Зачастую в разных алгоритмах приходится увеличивать и уменьшать целые числа на единицу.
Для этого существуют специальные операторы инкремента и декремента.
Варианты могут быть самыми разными:- $i++ - постфиксный инкремент, возвращает текущее значение $i, а затем увеличивает значение на единицу
- $i-- - постфиксный декремент, возвращает текущее значение $i, а затем уменьшает значение на единицу
- ++$i – префиксный инкремент, сначала увеличивает значение переменной $i на единицу, а затем возвращает результат
- --$i – префиксный декремент, сначала уменьшает значение переменной $i на единицу, а затем возвращает результат
Давайте рассмотрим несколько простых примеров:
С инкрементом и декрементом на этом всё. Идём дальше.
Логические операторы
А теперь поговорим об одном из самых важных типов операторов, а именно – логических. Эти операторы используются для вычисления условий. Результатом такого оператора всегда будет истина или ложь. При этом операндами так же выступают истина или ложь.
Давайте перечислим их:- && - логическое И, вернёт true, только если оба операнда истинны (true)
- || - логическое ИЛИ, вернёт true, если хотя бы один из операндов является истинным
- ! – ОТРИЦАНИЕ, возвращает true, если операнд – false, и наоборот. Применяется если нужно инвертировать условие, зачастую это очень кстати.
- xor – исключающее ИЛИ, вернёт true, только если один из операндов true, а другой – false
Давайте посмотрим на примере:
А теперь давайте более интересно – определим, является ли число чётным и при этом оно больше 10. Для того, чтобы проверить на чётность – достаточно взять остаток от деления на 2 и сравнить с нулём. Если будет 0, то число чётное. Давайте напишем первое вычисление:
А теперь второе:
10; var_dump($isMoreThan10); // trueОстаётся сделать так, чтобы выполнились оба условия. Воспользуемся логическим И:
10; var_dump($isMoreThan10); $isEvenAndMoreThan10 = $isEven && $isMoreThan10; var_dump($isEvenAndMoreThan10);Вычисление можно было бы выразить и одной строкой:
Однако, согласитесь, первый вариант разбит по пунктам и более понятен. Я хочу, чтобы Вы поняли. Ваш код не должен занимать как можно меньше места. Он должен быть понятен. Можно сказать, будет очень неплохо, если он будет скучен. Он должен легко читаться программистами. В первом случае всё очевидно: выяснили, что число чётное, что оно больше 10, и решили, что оба эти условия выполняются одновременно. Вот как-то так должен мыслить человек, читающий Ваш код.
И ещё, если операнды не являются булевыми значениями, они будут автоматически приведены к true или false. Оставим это на самостоятельное ковыряние – в домашнем задании будет пункт, касательно этого замечания. Обязательно выполните его.
Строковый оператор конкатенации
Да-да, для строк существует только один оператор – для их объединения в одну: оператор конкатенации. Он представляет из себя точку и его использование выглядит следующим образом:
На этом заканчивается наш урок по операторам. Обязательно выполните домашку, без неё дальше не пойдёт.
