Найти в Дзене
Блог Web-Dev

Операторы PHP

Операторы PHP - это знаки, принимающие различные значения (выражения), и они служат для выполнения определённых операций над ними, и выводят новые значения. Без операторов невозможно было бы сделать что-либо с данными, некоторые из них мы знаем еще со школы ( -, =, !, +, ?). PHP классифицирует операторов следующим образом: Операторы присваивания Базовым оператором присваивания в PHP является знак "=", используется для присвоения переменной разных значений. Это значит, что левым операндам присваиваются значения выражения справа. <?php
$str_text="Добрый";
$str_2=" день";
$str_text = $str_text.$str_2;
echo $str_text; //Выводит Добрый день
$num_y=6;
$num_y = $num_y+8;
echo $num_y; //Выводит 14
?> Есть также комбинированные операторы (например «.=», «+=»), которые являются дополнением базового: <?php
//Это сокращенные варианты примеров выше, благодаря операторам «.=», «+=»
$str_text .= $str_2;
echo $str_text;
$num_y += 8;
echo $num_y;
?> Строковые операторы Для строковых в PHP разработали д
Оглавление

Операторы PHP - это знаки, принимающие различные значения (выражения), и они служат для выполнения определённых операций над ними, и выводят новые значения. Без операторов невозможно было бы сделать что-либо с данными, некоторые из них мы знаем еще со школы ( -, =, !, +, ?).

PHP классифицирует операторов следующим образом:

  • оператор присваивания;
  • строковый оператор;
  • оператор сравнения;
  • арифметический оператор;
  • оператор инкремента/декремента;
  • оператор массива;
  • логический оператор;
  • условный оператор;
  • оператор управления ошибками;
  • оператор проверки типа.

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

Базовым оператором присваивания в PHP является знак "=", используется для присвоения переменной разных значений. Это значит, что левым операндам присваиваются значения выражения справа.

<?php
$str_text="Добрый";
$str_2=" день";
$str_text = $str_text.$str_2;
echo $str_text; //Выводит Добрый день
$num_y=6;
$num_y = $num_y+8;
echo $num_y; //Выводит 14
?>

Есть также комбинированные операторы (например «.=», «+=»), которые являются дополнением базового:

<?php
//Это сокращенные варианты примеров выше, благодаря операторам «.=», «+=»
$str_text .= $str_2;
echo $str_text;
$num_y += 8;
echo $num_y;
?>

Строковые операторы

Для строковых в PHP разработали два специальных оператора.

  • Конкатенация «.» — используется для соединения различных аргументов. Этими аргументами могут быть переменные, строки или функции.
<?php
function funcString(){
return "погода"; //возвращает погода
}
$str_x = "Сегодня ";
$str_x = $str_x."ясная ".funcString();
echo $str_x; //Выводит «Сегодня ясная погода»
?>
  • Присваивание с конкатенацией «.=» — Соединяет правый аргумент к левой переменной и уменьшает код. Аргументом может быть другая переменная, строка или функция.
<?php
//Немного укоротим верхний пример
function funcString(){
return "погода"; //возвращает погода
}
$str_x = "Сегодня ";
$str_x .= "ясная ".funcString(); //код стал более коротким
echo $str_x; //Выводит «Сегодня ясная погода»
?>

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

Для сравнения разных значений (строковых или числовых) пользуются операторами сравнения PHP.

Прежде чем продолжить необходимо усвоить, что такое «true» и «false». Это логические значения: «true» означает истинно или верно, а «false» означает ложь или неверно.

  • «==» — Сравнивает равенство значений операндов, без учета их типов. Если равны вернет true.
<?php
function funcBool(){
return true; //возвращает true, а true выводит цифру 1
}
echo "<br>этот пример «==» выводит — ";
echo 1==funcBool(); //Выводит 1
echo "<br>этот пример «==» выводит — ";
echo 'один'=='один'; //Выводит 1
?>
  • «!=» — Сравнивает неравенство значений операндов, без учета их типов. Если неравны вернет true.
<?php
echo "<br>этот пример «!=» выводит — ";
echo true != false; //Выводит 1
echo "<br>этот пример «!=» выводит — ";
echo 'один' != ' один'; //Выводит 1
?>
  • «<>» — Похож на «!=», тоже сравнивает неравенство значений без учета типов.
  • «===» — Сравнивает равенство значений операндов, с учетом их типов. Если равны вернет true.
<?php
function funcBool(){
return true; //возвращает true, а true выводит цифру 1
}
echo "<br>этот пример «===» выводит — ";
echo true===false; //Выводит пустое значение, т.к. типы неравны
echo "<br>этот пример «===» выводит — ";
echo true===funcBool(); //Выводит 1
?>
  • «!==» — Сравнивает неравенство значений операндов, с учетом их типов. Если неравны вернет true.
<?php
function funcBool(){
return true; //возвращает true, а true выводит цифру 1
}
echo "<br>этот пример «!==» выводит — ";
echo true !== funcBool(); //Выводит пустое значение, т.к. типы равны
echo "<br>этот пример «!==» выводит — ";
echo 1 !== funcBool(); //Выводит 1
?>
  • «>» — Выводит true, если значение первого операнда больше второго.
<?php
function funcBool(){
return true; //возвращает true, а true выводит цифру 1
}
echo "<br>этот пример «>» выводит — ";
echo funcBool() > 0; //Выводит 1
echo "<br>этот пример «>» выводит — ";
echo 6 > 5; //Выводит 1
?>
  • «<» — Выводит true, если значение первого операнда меньше второго.
<?php
function funcBool(){
return true; //возвращает true, а true выводит цифру 1
}
echo "<br>этот пример «<» выводит — ";
echo funcBool() < 2; //Выводит 1
echo "<br>этот пример «<» выводит — ";
echo 6 < 5; //Выводит пустое значение, т.к. 6 больше 5
?>
  • «>=» — Выводит true, если значение первого операнда больше или равен второму операнду.
<?php
function funcBool(){
return true; //возвращает true, а true выводит цифру 1
}
echo "<br>этот пример «>=» выводит — ";
echo funcBool() >= 1; //Выводит 1
echo "<br>этот пример «>=» выводит — ";
echo 6 >= 5; //Выводит 1
?>
  • «<=» — Выводит true, если значение первого операнда меньше или равен второму операнду.
<?php
function funcBool(){
return true; //возвращает true, а true выводит цифру 1
}
echo "<br>этот пример «<=» выводит — ";
echo funcBool() <= 2; //Выводит 1
echo "<br>этот пример «<=» выводит — ";
echo 4 <= 7; //Выводит 1
?>

Результатами всех этих примеров будет возвращение логических значений, либо true (на дисплей выйдет 1), либо false (на дисплей выйдет пустое значение). Если false использовать в вычислениях, то он будет считаться как 0.

  • «<=>» — Если значение первого операнда меньше второго возвращает -1, если больше вернет 1, а если значения равны вернет 0.

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

<?php
$num_x = 8;
$num_y = 6;
echo "<br>этот пример «<=>» выводит — ";
echo ($num_x <=> $num_y); //Выводит 1
$num_x = 6;
$num_y = 8;
echo "<br>этот пример «<=>» выводит — ";
echo ($num_x <=> $num_y); //Выводит -1
$num_x = 8;
$num_y = 8;
echo "<br>этот пример «<=>» выводит — ";
echo ($num_x <=> $num_y); //Выводит 0
?>

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

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

  • «+» — Складывает аргументы с числовыми типами.
<?php
$num_x=9;
function funcNumber(){
return 4; //возвращает число 4
}
echo $num_x+5+funcNumber(); //Выводит на дисплей 18;
?>
  • «-» — Вычитает аргументы с числовыми типами.
<?php
$num_x=9;
function funcNumber(){
return 4; //возвращает число 4
}
echo $num_x-3-funcNumber(); //Выводит на дисплей 2;
?>
  • «*» — Умножает аргументы с числовыми типами.
<?php
$num_x=9;
function funcNumber(){
return 4; //возвращает число 4
}
echo $num_x*2*funcNumber(); //Выводит на дисплей 72;
?>
  • «/» — Делит аргументы с числовыми типами.
<?php
$num_x=9;
function funcNumber(){
return 4; //возвращает число 4
}
echo $num_x/1/funcNumber(); //Выводит на дисплей 2,25;
?>
  • «**» — Возводит в степень аргументы с числовыми типами.
<?php
$num_x=9;
function funcNumber(){
return 4; //возвращает число 4
}
echo $num_x**2; //Выводит на дисплей 81;
echo funcNumber()**2; //Выводит на дисплей 16;
?>
  • «%» — возвращает остаток от деления аргументов с числовыми типами, например, 8%3 - это два раза по 3 и вернет остаток 2.
<?php
$num_x=9;
function funcNumber(){
return 4; //возвращает число 4
}
echo 8%3; //Выводит на дисплей 2
echo $num_x%3; //Этот пример 9%3 вернет - 0.
echo funcNumber()%3; //Выводит на дисплей 1;
?>

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

Операторы Инкремента / Декремента

С помощью операторов инкремента «++» увеличивают (+1) значения переменной.

  • Постфиксный инкремент «$k++» — Такой пример сначала возвращает значение переменной, а потом прибавляет к нему 1.
<?php
$k=1;
echo "<br>Этот постфиксный пример сначала возвращает — ";
echo $k++; //Выводит 1
echo "<br>и уже затем добавляет — ";
echo $k; //Выводит 2
?>
  • Префиксный инкремент «++$k» — А этот вариант сперва прибавляет 1 и только потом возвращает.
<?php
$k=1;
echo "<br>Этот префиксный пример сначала прибавляет — ";
echo $++k; //Выводит 2
echo "<br>и уже затем возвращает — ";
echo $k; //Выводит 2
?>

А с другим оператором декрементом «--» наоборот уменьшают (-1) значения переменной.

  • Постфиксный декремент «$k--» — Этот пример сначала возвращает значение переменной, а потом отнимает 1.
<?php
$k=3;
echo "<br>Этот постфиксный пример сначала возвращает — ";
echo $k--; //Выводит 3
echo "<br>и уже затем уменьшает — ";
echo $k; //Выводит 2
?>
  • Префиксный декремент «--$k» — В этом варианте сперва отнимается 1 и только потом возвращается переменная.
<?php
$k=3;
echo "<br>Этот префиксный пример сначала уменьшает — ";
echo $--k; //Выводит 2
echo "<br>и уже затем возвращает — ";
echo $k; //Выводит 2
?>

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

Чтобы объединить различные условия пользуются логическими операторами PHP. Они уменьшают количество if и снижается вероятность ошибки в коде.

  • «||» — или. Означает, или один true, или другой, или оба(все). Отличается от «or» тем, что имеет больший приоритет.
<?php
$num_1 = 22;
$num_2 = 33;
//когда используется или (||) достаточно одного операнда-true, чтобы все условие было true
//здесь 1-операнд:($num_1 == 22)-true; 2-операнд:($num_2 == 40)-false; итог:(true || false)-true;
if ($num_1 == 22 || $num_2 == 40) {
echo "Good afternoon!";
}
?>
  • «or» — или. Также как и предыдущий означает «или».
<?php
$num_1 = 66;
$num_2 = 11;
//здесь 1-операнд:($num_1 == 14)-false; 2-операнд:($num_2 == 11)-true; итог:(false or true)-true;
if ($num_1 == 14 or $num_2 == 11) {
echo "Good evening!";
}
?>
  • «xor» — Включает один операнд true и исключает другой false.
<?php
$num_1 = 66;
$num_2 = 0;
//здесь 1-операнд:($num_1 == 66)-true; 2-операнд:($num_2 == 11)-false; итог:(true xor false)-true;
if ($num_1 == 66 xor $num_2 == 11) {
echo "Welcome!";
}
?>
  • «&&» — и. Все операнды должны быть true. По сравнению с «and», обладает большим приоритетом.
<?php
$color_1 = "синий";
$color_2 = "красный";
//здесь 1 — операнд:($color_1=="синий") — true; 2 — операнд:($color_2=="красный") — true; итог:(true && true) — true;
if ($color_1 == "синий" && $color_2 == "красный") {
echo "Цвет футболки — $color_1, а цвет рубашки — $color_2";
}
?>
  • «and» — и. Означает тоже самое, что и «&&».
<?php
$auto_1 = "красная";
$auto_2 = "белая";
//здесь 1-операнд:($auto_1 == "красная") — true; 2 — операнд:($auto_2 == "белая") — true; итог:(true && true) — true;
if($auto_1 == "красная" and $auto_2 == "белая") {
echo "Volvo - $auto_1, Toiota - $auto_2";
}
?>
  • «!» — не. Это символ отрицания.
<?php
$number = 77;
//здесь операнд:($number != 46) — true; итог:(true) — true;
if($number != 46) {
echo "Цифра $number не равна 46!";
}
?>

Операторы массива

Для операций с массивами в PHP используют операторы массива:

  • «+» — Данный оператор предназначен для соединения массивов.
  • «==» — С этим оператором проверяется равенство массивов (равны ключи и значения).
  • «!=» — Проверяется неравенство массивов (не равны ключи и значения).
  • «<>» — Схож с предыдущим, тоже проверяет неравенство.
  • «===» — Проверяется равенство массивов не только по ключам/значениям (в одном порядке), но и по типу.
  • «!==» — Проверяется неравенство массивов по ключам, значению и типу.

Примеры с массивами:

<?php
$array_1=["Вольво"=>"Синий","Мерседес"=>"Красный","Хонда"=>"Белая"];
$array_2=["БМВ"=>"Черный","Тойота"=>"Желтая"];
$array_auto = $array_1 + $array_2;
print_r($array_auto);//Выводит Array ( [Вольво] => Синий [Мерседес] => Красный [Хонда] => Белая [БМВ] => Черная [Тойота] => Желтая )
echo $array_1 == $array_2; //Выводит пустое значение (false), т.к. массивы неравны
echo $array_1 != $array_2; //Выводит 1(true), т.к. массивы неравны
echo $array_1 <> $array_2; //Выводит 1(true), т.к. массивы неравны
echo $array_1 === $array_2; //Выводит пустое значение (false), т.к. массивы по двум параметрам неравны (только по типу равны)
echo $array_1 !== $array_2; //Выводит 1(true), т.к. по двум параметрам неравны (ключам/значениям)
?>

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

С помощью условных операторов значения устанавливаются в зависимости от различных условий:

  • «?:» — Если значение перед вопросительным знаком истинно (true), то присваивается значение после знака вопроса (?). Но если ложно (false), то присваивается значение после знака двоеточие (:).
<?php
$data = "Данные";
echo $new_data = $data ? $data : "Пусто";
echo "<br>";
$data = false;
echo $new_data = $data ? $data : "Пусто";
?>

Данный оператор является более простой конструкцией if/else.

  • «??» — Если значение перед двумя вопросительными символами существует и не равен нулю, то присваивается значение перед символами вопроса (??). Иначе присваивается значение после знаков вопроса.
<?php
$data = "Данные";
echo $new_data = $data ?? "Пусто";
echo "<br>";
$data = false;
echo $new_data = $data ?? "Пусто";
echo "<br>";
$data = 0;
echo $new_data = $data ?? "Пусто";
?>

Оператор управления ошибками

Если при выполнении какого либо кода нужно проигнорировать ошибку, тогда этот знак «@» заблокирует сообщение об ошибке. Данный оператор можно использовать только с выражениями. Его нельзя применять в определении классов, функций и условных конструкций.

<?php
$data_file = @file_get_contents("несуществующий_файл.html");
$perem=@$array["name"];
?>

В первом примере мы попытались присвоить данные несуществующего файла переменной «$data_file» и это привело бы к ошибке, но символ «@» заблокировал ошибку.

В другом примере мы попытались вложить в переменную данные несуществующего массива с ключом «name» и там тоже была проигнорирована ошибка символом «@».

Оператор проверки типа

Для проверки принадлежности или наследуемости определенного объекта к какому нибудь классу, используют оператор «instanceof».

<?php
class MyExtends{
//Код класса MyExtends
}
class MainClass extends MyExtends{
//Код класса MainClass
}
$myObject = new MainClass; //Создание обьекта
var_dump($myObject instanceof MainClass); //Выводит bool(true)
var_dump($myObject instanceof MyExtends); //Выводит bool(true)
?>

В нашем примере, мы видим, как внутри первой функции «var_dump» через «instanceof» проверяется объект на принадлежность к определенному классу «MainClass». А внутри следующей функции «var_dump» у нашего объекта через «instanceof» проверяется наследуемость определенного класса «MyExtends».

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

Также, как и в математике операторы обладают различными приоритетами:

<?php
echo 4-6*3; //выводит 14, а не -6
echo 4+6*3; //выводит 22, а не 30
?>

В этих примерах сначала вычисляется умножение 6*3, а уже потом вычитается или прибавляется 4. Так как умножение обладает более высоким приоритетом, нежели минус или плюс.

Но в PHP этим приоритетом можно управлять при помощи круглых скобок, смотрите следующий пример:

<?php
echo (4-6)*3; //выводит уже -6, а не 14
echo (4+6)*3; //выводит уже 30, а не 22
echo (5-2)*(7+3); //Сначала вычисляются значения в скобках, а потом идет умножение. Выводит 30.
?>

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