операторы — Справочник — Что означает этот символ в PHP?

Что это?

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

Почему это?

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

Примечание: с января 2013 года переполнение стека поддерживает специальные символы. Просто окружите условия поиска кавычками, например, [php] "==" vs "==="

Что мне здесь делать?

Если кто-то указал на вас кем-то из-за того, что вы задали такой вопрос, пожалуйста, найдите конкретный синтаксис ниже. Связанные страницы с Руководство по PHP вместе со связанными вопросами, скорее всего, ответит на ваш вопрос. Если это так, вам предлагается поднять ответ. Этот список не является заменой помощи, оказанной другими.

Список

Если ваш конкретный токен не указан ниже, вы можете найти его в Список токенов парсера.


& Битовые операторы или же Рекомендации


=& Рекомендации


&= Битовые операторы


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


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


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


@ Операторы контроля ошибок


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


?? Null Coalesce Operator (начиная с PHP 7)


?string
?int
?array
?bool
?float Обнуляемое объявление типа возврата (начиная с PHP 7.1)


: Альтернативный синтаксис для структур управления, Троичный оператор


:: Оператор разрешения области


\ Пространства имен


-> Классы И Объекты


=> Массивы


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


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


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


<<< Эредок или Новдок


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


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


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


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


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


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


<=> Операторы сравнения (начиная с PHP 7.0)


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


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


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


+ Арифметические Операторы, Операторы массива


+= а также -= Операторы присваивания


++ а также -- Увеличение / Уменьшение Операторов


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


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


, Аргументы функции

, Объявления переменных


$$ Переменные Переменные


` Оператор исполнения


<?= Короткие открытые теги


[] Массивы (короткий синтаксис начиная с PHP 5.4)


<? Открытие и закрытие тегов


... Аргумент распаковывается (начиная с PHP 5.6)


** Возведение (начиная с PHP 5.6)


# Однострочный комментарий в стиле оболочки


:? Обнуляемые типы возврата


4036

Решение

Увеличение / Уменьшение Операторов

++ оператор приращения

-- оператор декремента

Example    Name              Effect
---------------------------------------------------------------------
++$a       Pre-increment     Increments $a by one, then returns $a.
$a++       Post-increment    Returns $a, then increments $a by one.
--$a       Pre-decrement     Decrements $a by one, then returns $a.
$a--       Post-decrement    Returns $a, then decrements $a by one.

Они могут идти до или после переменной.

Если поставить перед переменной, операция увеличения / уменьшения выполняется для переменной первый тогда результат возвращается. Если поставить после переменной, переменная первый возвращается, то операция увеличения / уменьшения выполняется.

Например:

$apples = 10;
for ($i = 0; $i < 10; ++$i) {
echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

Живой пример

В случае выше ++$i используется, так как это быстрее. $i++ будет иметь такие же результаты.

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

Тем не менее, вы должны использовать $apples--, так как сначала вы хотите отобразить текущее количество яблок, и затем Вы хотите вычесть один из них.

Вы также можете увеличивать буквы в PHP:

$i = "a";
while ($i < "c") {
echo $i++;
}

однажды z достигнут aa рядом и так далее.

Обратите внимание, что символьные переменные можно увеличивать, но не уменьшать, и даже в этом случае поддерживаются только простые символы ASCII (a-z и A-Z).


Сообщения переполнения стека:

1022

Другие решения

Что немного? Бит представляет собой 1 или 0. В основном OFF (0) и ON (1)

Что такое байт? Байт состоит из 8 битов, а наибольшее значение байта равно 255, что означает, что установлен каждый бит. Посмотрим, почему максимальное значение байта равно 255.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------

Это представление 1 байт

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 байт)

Оператор «И»: &

$a =  9;
$b = 10;
echo $a & $b;

Это вывело бы число 8. Почему? Хорошо, давайте посмотрим на нашем примере таблицы.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
-------------------------------------------
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
-------------------------------------------

Таким образом, вы можете видеть из таблицы, что единственный бит, которым они делятся, это 8 бит.

Второй пример

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

Два общих бита — 32 и 4, которые при сложении вместе возвращают 36.

Оператор «Или»: |

$a =  9;
$b = 10;
echo $a | $b;

Это вывело бы число 11. Почему?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
-------------------------------------------
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

Вы заметите, что у нас установлено 3 бита в столбцах 8, 2 и 1. Сложите их: 8 + 2 + 1 = 11.

389

_ Псевдоним для gettext ()

Символ подчеркивания ‘_’, как в _() это псевдоним gettext() функция.

246

Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
(x < 10 and y > 1) returns true
x && y    And              True if both x and y are true x=6 y=3
(x < 10 && y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"
235

Добавлено в PHP 7

оператор космического корабля <=> это последний оператор сравнения, добавленный в PHP 7. Это неассоциативным бинарный оператор с тем же приоритетом, что и операторы равенства (==, !=, ===, !==). Этот оператор позволяет упростить трехстороннее сравнение между левым и правым операндами.

Оператор приводит к целочисленному выражению:

  • 0 когда оба операнда равны
  • Меньше, чем 0 когда левый операнд меньше правого операнда
  • Лучше чем 0 когда левый операнд больше правого операнда

например

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

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

До PHP 7 вы писали бы …

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
if ($a < $b) {
return -1;
} elseif ($a > $b) {
return 1;
} else {
return 0;
}
});

Начиная с PHP 7 вы можете написать …

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
return $a <=> $b;
});
215

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

__LINE__: Текущий номер строки файла.

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

__DIR__: Каталог файла. Если используется внутри включения, возвращается каталог включенного файла. Это эквивалентно dirname(__FILE__), Это имя каталога не имеет косой черты, если только оно не является корневым каталогом. (Добавлено в PHP 5.3.0.)

__FUNCTION__: Имя функции. (Добавлено в PHP 4.3.0) Начиная с PHP 5, эта константа возвращает имя функции в том виде, в котором она была объявлена ​​(с учетом регистра). В PHP 4 его значение всегда в нижнем регистре.

__CLASS__: Имя класса. (Добавлено в PHP 4.3.0) Начиная с PHP 5 эта константа возвращает имя класса в том виде, в котором оно было объявлено (с учетом регистра). В PHP 4 его значение всегда в нижнем регистре. Имя класса включает пространство имен, в котором оно было объявлено (например, Foo\Bar). Обратите внимание, что начиная с PHP 5.4 __CLASS__ работает также в чертах. При использовании в методе черт, __CLASS__ Имя класса, в котором используется черта.

__TRAIT__: Имя черты. (Добавлено в PHP 5.4.0) Начиная с PHP 5.4, эта константа возвращает признак в том виде, в котором он был объявлен (с учетом регистра). Имя признака включает пространство имен, в котором оно было объявлено (например, Foo\Bar).

__METHOD__: Имя метода класса. (Добавлено в PHP 5.0.0) Имя метода возвращается в том виде, в котором оно было объявлено (с учетом регистра).

__NAMESPACE__: Имя текущего пространства имен (с учетом регистра). Эта константа определяется во время компиляции (добавлено в PHP 5.3.0).

Источник

210

instanceof используется для определения того, является ли переменная PHP экземпляром объекта определенного класса.

<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

Приведенный выше пример выведет:

bool(true)
bool(false)

Причина: Пример выше $a является объектом mclass так что используйте только mclass данные не экземпляр с sclass

Пример с наследованием

<?php
class pclass { }
class childclass extends pclass { }
$a = new childclass;
var_dump($a instanceof childclass);
var_dump($a instanceof pclass);

Приведенный выше пример выведет:

bool(true)
bool(true)

Пример с клоном

<?php
class cloneable { }
$a = new cloneable;
$b = clone $a;
var_dump($a instanceof cloneable);
var_dump($b instanceof cloneable);

Приведенный выше пример выведет:

bool(true)
bool(true)
131

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

  • $ а && $ b: TRUE, если $ a и $ b равны TRUE.
  • $ a || $ b: ИСТИНА, если $ a или $ b — ИСТИНА.
  • $ a xor $ b: TRUE, если $ a или $ b TRUE, но не оба.
  • ! $ a: TRUE, если $ a не TRUE.
  • $ a и $ b: TRUE, если $ a и $ b равны TRUE.
  • $ a или $ b: ИСТИНА, если $ a или $ b — ИСТИНА.

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

  • $ a == $ b: TRUE, если $ a равно $ b после жонглирования типа.
  • $ a === $ b: TRUE, если $ a равно $ b, и они одного типа.
  • $ a! = $ b: TRUE, если $ a не равно $ b после жонглирования типа.
  • $ а <> $ b: TRUE, если $ a не равно $ b после жонглирования типа.
  • $ a! == $ b: TRUE, если $ a не равно $ b или они не одного типа.
  • $ а < $ б : ИСТИНА, если $ a строго меньше, чем $ b.
  • $ a> $ b : ИСТИНА, если $ a строго больше, чем $ b.
  • $ а <= $ b : ИСТИНА, если $ a меньше или равно $ b.
  • $ a> = $ b : ИСТИНА, если $ a больше или равно $ b.
  • $ а <=> $ b : Целое число меньше, равно или больше нуля, когда $ a соответственно меньше, равно или больше, чем $ b. Доступно с PHP 7.
  • $ a? $ b: $ c : если $ a вернуть $ b, иначе вернуть $ c (троичный оператор)
  • $ a ?? $ с : Так же, как $ a? $ a: $ c (нулевой оператор объединения — требует PHP> = 7)

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

  • -$ а : Напротив $ a.
  • $ a + $ b : Сумма $ a и $ b.
  • $ a — $ b : Разница между $ a и $ b.
  • $ a * $ b : Произведение $ a и $ b.
  • $ a / $ b : Частное от $ a и $ b.
  • $ a% $ b : Остаток от $ a, деленный на $ b.
  • $ a ** $ b : Результат повышения $ a до $ b’th power (введено в PHP 5.6)

Операторы увеличения / уменьшения:

  • ++$ а : Увеличивает $ a на единицу, а затем возвращает $ a.
  • $ А ++ : Возвращает $ a, затем увеличивает $ a на единицу.
  • —$ а : Уменьшает $ a на единицу, затем возвращает $ a.
  • $ a— : Возвращает $ a, затем уменьшает $ a на единицу.

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

  • $ а & $ б : Биты, которые установлены как в $ a, так и в $ b, установлены.
  • $ a | $ б : Биты, которые установлены в $ a или $ b, установлены.
  • $ a ^ $ b : Биты, которые установлены в $ a или $ b, но не оба установлены.
  • ~ $ a : Биты, которые установлены в $ a, не установлены, и наоборот.
  • $ а << $ б : Сдвинуть биты шагов $ a $ b влево (каждый шаг означает «умножить на два»)
  • $ a >> $ b : Сдвиньте биты шагов $ a $ b вправо (каждый шаг означает «делить на два»)

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

  • $ a. $ б : Объединение $ a и $ b.

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

  • $ a + $ b : Объединение $ a и $ b.
  • $ a == $ b : TRUE, если $ a и $ b имеют одинаковые пары ключ / значение.
  • $ a === $ b : TRUE, если $ a и $ b имеют одинаковые пары ключ / значение в одном и том же порядке и одинаковых типов.
  • $ a! = $ b : ИСТИНА, если $ a не равно $ b.
  • $ а <> $ b : ИСТИНА, если $ a не равно $ b.
  • $ a! == $ b : ИСТИНА, если $ a не совпадает с $ b.

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

  • $ a = $ b : Значение $ b присваивается $ a
  • $ a + = $ b : То же, что $ a = $ a + $ b
  • $ a — = $ b : То же, что $ a = $ a — $ b
  • $ a * = $ b : То же, что $ a = $ a * $ b
  • $ a / = $ b : То же, что $ a = $ a / $ b
  • $ a% = $ b : То же, что $ a = $ a% $ b
  • $ a ** = $ b : То же, что $ a = $ a ** $ b
  • $ a. = $ b : То же, что $ a = $ a. $ б
  • $ а &= $ b : То же, что $ a = $ a & $ б
  • $ a | = $ b : То же, что $ a = $ a | $ б
  • $ a ^ = $ b : То же, что $ a = $ a ^ $ b
  • $ а <<= $ b : То же, что $ a = $ a << $ б
  • $ a >> = $ b : То же, что $ a = $ a >> $ b

Заметка

and оператор и or оператор имеет более низкий приоритет, чем оператор присваивания =,

Это означает, что $a = true and false; эквивалентно ($a = true) and false,

В большинстве случаев вы, вероятно, захотите использовать && а также ||, которые ведут себя так, как известно из языков, таких как C, Java или JavaScript.

109
По вопросам рекламы [email protected]