PHP: Операторы
Знак операции, например, + , называют оператором. Операторы обычно представлены одним или несколькими символами, реже — словом. Обычно они соответствуют математическим операциям.
Операторы выполняют операции над определенными значениями, которые называются операндами.
Здесь + — это оператор, а числа 8 и 2 — это операнды.
Операции, которые требуют наличия двух операндов, называются бинарными. В случае сложения у нас есть два операнда: один слева от знака + , другой — справа. Если пропустить хотя бы один операнд, например, 3 + ; , то программа завершится с синтаксической ошибкой.
Еще операции бывают унарными — с одним операндом, и тернарными — с тремя операндами. Причем операторы могут выглядеть одинаково, но обозначать разные операции.
Символы + и — используются не только как операторы. Когда речь идет про отрицательные числа, то знак минуса становится частью числа:
Выше пример применения унарной операции к числу 3 . Оператор — перед тройкой говорит интерпретатору взять число 3 и найти противоположное, то есть -3 . Это может сбить с толку, потому что -3 — это одновременно и число, и оператор с операндом. Но у языков программирования такая структура:
То же самое касается и плюса:
Задание
Напишите программу, которая посчитает разность между числами 6 и -81 и выведет ответ на экран.
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
Определения
- Арифметическая операция — сложение, вычитание, умножение и деление.
- Унарная операция — операция с одним операндом. Например, -3 — унарная операция для получения числа, противоположного числу три.
- Бинарная операция — операция с двумя операндами. Например, 3 + 9 .
Операторы
Оператором называется нечто, принимающее одно или более значений (или выражений, если говорить на жаргоне программирования), и вычисляющее новое значение (таким образом, вся конструкция может рассматриваться как выражение).
Операторы можно сгруппировать по количеству принимаемых ими значений. Унарные операторы принимают только одно значение, например, ! (оператор логического отрицания) или ++ (инкремент). Бинарные операторы принимают два значения; это, например, знакомые всем арифметические операторы + (плюс) и — (минус), большинство поддерживаемых в PHP операторов входят именно в эту категорию. Ну и, наконец, есть всего один тернарный оператор, ? : , принимающий три значения, обычно его так и называют — «тернарный оператор» (хотя, возможно, более точным названием было бы «условный оператор»).
Полный список PHP-операторов вы можете найти в разделе «Порядок выполнения операторов». В этом разделе также описан порядок выполнения операторов и их ассоциативность, которые точно определяют, как вычисляются выражения с несколькими разными операторами.
User Contributed Notes 9 notes
of course this should be clear, but i think it has to be mentioned espacially:
’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 😀
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
16.yield Operator
yield = yield
17.print Operator
print = print
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.
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]
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 );
?>
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’
?>
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.
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.
A variable is a container that contain different types of data and the operator operates a variable correctly.
- Справочник языка
- Основы синтаксиса
- Типы
- Переменные
- Константы
- Выражения
- Операторы
- Управляющие конструкции
- Функции
- Классы и объекты
- Пространства имён
- Перечисления
- Ошибки
- Исключения
- Fibers
- Генераторы
- Атрибуты
- Объяснение ссылок
- Предопределённые переменные
- Предопределённые исключения
- Встроенные интерфейсы и классы
- Предопределённые атрибуты
- Контекстные опции и параметры
- Поддерживаемые протоколы и обёртки