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

Что это?

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

Почему это?

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

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

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

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

Список

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


& Побитовые операторы или ссылки

  • Что значит запустить PHP-функцию с амперсандом?
  • Понимание PHP & (амперсанда, побитового и) оператора
  • Оператор PHP и & quot;
  • Разница между & и && в PHP
  • Что означает «&» здесь в PHP?
  • Что означает «&» в данном случае?
  • Что означает знак «&» в PHP?
  • Что означает эта подпись (&) в PHP?
  • Как работает оператор «&» в функции PHP?
  • Что означает & in & 2 в PHP?
  • Когда следует использовать побитовый оператор?
  • Есть ли необходимость использовать амперсанд перед объектом? (& $)

=& Ссылки

  • Оператор присваивания ссылок в PHP, = &
  • Что означают операторы «= &» и «& =» в PHP?
  • Что делают операторы '& =' и '= &'?
  • Что означает = и означает в PHP?

&= Побитовые операторы

  • Что означают операторы «= &» и «& =» в PHP?
  • Что делают операторы '& =' и '= &'?

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

  • 'AND' vs '&&' как оператор
  • Разница между & и && в PHP
  • Есть ли разница между операторами «и» и «&&» в PHP?
  • PHP – и / или ключевые слова

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

  • Что означает знак процента в PHP?
  • Что такое PHP-оператор% и как его использовать в реальных примерах?

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

  • Двойной не (!!) оператор в PHP

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

  • Каково использование символа @ в PHP?
  • Символ «В» перед именем переменной в PHP: @ $ _ POST
  • Функции PHP и @functions
  • Должен ли я использовать @ в моем PHP-коде?

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

  • Что такое PHP-операторы? " и «:» призваны и что они делают?
  • ?: оператор («оператор Элвиса») в PHP
  • Где я могу прочитать об условностях, сделанных с помощью?? и ":" (двоеточие)?
  • Использование PHP 5.3?: Оператор

?? Оператор Null Coalesce (с PHP 7)

  • Нулевой коалесцирующий оператор C # (?) В PHP?

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

  • Что такое «:» в PHP?
  • Что означает «:» в PHP?

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

  • Что означают два двоеточия в PHP?
  • В чем смысл имени маркера PHP T_PAAMAYIM_NEKUDOTAYIM?
  • В чем разница между :: (double colour) и -> (стрелкой) в PHP?
  • Что такое поздние статические привязки в PHP?
  • Статическая :: staticFunctionName ()
  • Неожиданный T_PAAMAYIM_NEKUDOTAYIM, ожидающий T_NS_Separator

\ Namespaces

  • Обратная косая черта в PHP – что это значит?
  • Что делает \ (обратная косая черта) в PHP (5.3+)?

-> Классы и объекты

  • Что называется «->» PHP-оператором и как вы это говорите при чтении кода вслух?
  • Где мы используем оператор объекта «->» в PHP?
  • В чем разница между :: (double colour) и -> (стрелкой) в PHP?
  • Что означает синтаксис PHP $ var1 -> $ var2?
  • Что означает «->» означает / ссылается на PHP?

=> Массивы

  • Что означает «=>» в PHP?
  • Использование => в PHP
  • Что означает $ k => $ v в foreach ($ ex as $ k => $ v)?

^ Побитовые операторы

  • Как работает побитовый оператор XOR ('^')?
  • Что означает ^ в PHP?

>> Побитовые операторы

  • Что означает >> в PHP?

<< Побитовые операторы

  • Странное поведение печати в PHP?

<<< Heredoc или Nowdoc

  • Что означает <<< END в PHP?
  • Выражение PHP <<< EOB
  • Что такое «<<<» в PHP?
  • Использование <<< CON в PHP
  • Что это за синтаксис в PHP?

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

  • 3 разных равны

== сравнения

  • Как различаются операторы сравнения с равенством равенства (== double equals) и идентичности (=== triple equals)?
  • Операторы PHP! = И ==
  • 3 разных равны
  • Тип-жонглирование и (строгое) большее / меньшее, чем сравнение в PHP

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

  • Что означает «===»?
  • Как различаются операторы сравнения с равенством равенства (== double equals) и идентичности (=== triple equals)?
  • 3 разных равны
  • Тип-жонглирование и (строгое) большее / меньшее, чем сравнение в PHP

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

  • Что означает? == оператор сравнения в PHP означает?
  • Есть ли разница между! == и! = В PHP?

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

  • Операторы PHP! = И ==
  • Есть ли разница между! == и! = В PHP?
  • сравнение,! == versus! =
  • В чем разница между <> и! =

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

  • Оператор PHP <>
  • Оператор PHP <>
  • В чем разница между <> и! =
  • Тип-жонглирование и (строгое) большее / меньшее, чем сравнение в PHP

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

  • Оператор космического корабля (трехстороннее сравнение)

| Побитовые операторы

  • В чем разница между | и || операторы?
  • Что такое использование одной трубы? ' В аргументе функции Do?

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

  • В чем разница между | и || операторы?
  • PHP – и / или ключевые слова
  • Что именно делает || имею в виду?
  • Поведение оператора или в PHP

~ Побитовые операторы

  • Что здесь означает этот оператор?

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

  • + для массива в PHP?

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

  • Что такое + = используется?
  • Что означает `$ page – = 1` в моем документе PHP?

++ и -- Инкрементные / декрементирующие операторы

  • Понимание приращения
  • Ответ ниже

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

  • В чем разница между. = И + = в PHP?
  • Чтобы понять строку PHP

. Операторы строк

  • Разница между периодом и запятой при конкатенации с эхом и возвратом?
  • Что такое. (точка) делать в PHP?

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

  • Разница между периодом и запятой при конкатенации с эхом и возвратом?

, Переменные объявления

  • Что означают запятые в объявлении переменной?

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

  • Что означает $$ (доллар или двойной доллар) в PHP?
  • Что такое «$$» в PHP?
  • $ function () и переменная $$

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

  • Какие обратные вызовы называются?

<?= Short Open Tags

  • Что означает этот символ в PHP <? =
  • Что означает «<? =» В PHP?
  • Что означает <? = Означает?

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

  • Массивы PHP … Что означает / является значение (ы) пустой скобки?
  • Каково значение []
  • Php array_push () vs myArray []
  • Что означает [] при чтении из массива PHP?
  • Сокращение для массивов: литерал $var = [] пустой массив

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

  • Являются ли PHP короткие теги приемлемыми для использования?

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


** Экспоненциальность (с PHP 5.6)


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

  • Могу ли я использовать хэши для комментариев в PHP?

Операторы приращения / сокращения

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

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

 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. 

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

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

Например:

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

Живой пример

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

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

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

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

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

Как только z будет достигнуто, aa будет следующим, и так далее.

Обратите внимание, что символьные переменные могут увеличиваться, но не уменьшаться, и поэтому поддерживаются только простые символы ASCII (az и AZ).


Stack Overflow Сообщений:

  • Понимание приращения

Побитовый оператор

Что немного? Бит представляет собой представление 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.

Оператор «Or»: |

 $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.

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

Символ подчеркивания «_», как и в _() является псевдонимом gettext() .

 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" 

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

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

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

__DIR__ : каталог файла. Если используется внутри include, возвращается каталог включенного файла. Это эквивалентно 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__ работает также в чертах. При использовании в методе trait __CLASS__ – это имя класса, в котором используется признак.

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

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

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

Источник

<=> Оператор космического корабля

Добавлено в 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; }); 

Операторы типа

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) 

Обзор операторов в PHP :


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

  • $ a && $ b: ИСТИНА, если оба $ a и $ b являются TRUE.
  • $ a || $ b: TRUE, если либо $ a, либо $ b TRUE.
  • $ a xor $ b: ИСТИНА, если либо $ a, либо $ b TRUE, но не оба.
  • ! $ a: ИСТИНА, если $ a не является ИСТИНА.
  • $ a и $ b: TRUE, если оба $ a и $ b являются TRUE.
  • $ a или $ b: TRUE, если значение $ a или $ b равно TRUE.

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

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

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

  • – $ a : напротив $ 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 мощности (введенный в PHP 5.6)

Операторы приращения / сокращения:

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

Побитовые операторы:

  • $ a & $ b : Биты, которые установлены как в $ a, так и в $ b.
  • $ a | $ b : Биты, установленные в $ a или $ b, устанавливаются.
  • $ a ^ $ b : Биты, которые установлены в $ a или $ b, но не оба установлены.
  • ~ $ a : Биты, которые установлены в $ 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 имеют одинаковые пары ключ / значение в том же порядке и одного и того же типа.
  • $ a! = $ b : ИСТИНА, если $ a не равно $ b.
  • $ a <> $ 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. $ б
  • $ a & = $ b : То же, что $ a = $ a & $ b
  • $ a | = $ b : То же, что $ a = $ a | $ б
  • $ a ^ = $ b : То же, что $ a = $ a ^ $ b
  • $ a << = $ b : То же, что $ a = $ a << $ b
  • $ a >> = $ b : То же, что $ a = $ a >> $ b

Заметка

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

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

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

Оператор космического корабля <=> (добавлен в PHP 7)

Примеры для <=> оператора Spaceship (PHP 7, источник: руководство PHP):

Целые числа, Поплавки, Строки, Массивы и объекты для трехстороннего сравнения переменных.

 // Integers echo 10 <=> 10; // 0 echo 10 <=> 20; // -1 echo 20 <=> 10; // 1 // Floats echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // Strings echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 echo "a" <=> "aa"; // -1 echo "zz" <=> "aa"; // 1 // Arrays echo [] <=> []; // 0 echo [1, 2, 3] <=> [1, 2, 3]; // 0 echo [1, 2, 3] <=> []; // 1 echo [1, 2, 3] <=> [1, 2, 1]; // 1 echo [1, 2, 3] <=> [1, 2, 4]; // -1 // Objects $a = (object) ["a" => "b"]; $b = (object) ["a" => "b"]; echo $a <=> $b; // 0 $a = (object) ["a" => "b"]; $b = (object) ["a" => "c"]; echo $a <=> $b; // -1 $a = (object) ["a" => "c"]; $b = (object) ["a" => "b"]; echo $a <=> $b; // 1 // only values are compared $a = (object) ["a" => "b"]; $b = (object) ["b" => "b"]; echo $a <=> $b; // 1 

{} Кудрявые скобки

  • Блоки – фигурные скобки / не фигурные скобки?
  • Кудрявые скобки в строке в PHP
  • PHP фигурные скобки в нотации массива

И несколько слов о последнем сообщении

 $x[4] = 'd'; // it works $x{4} = 'd'; // it works $echo $x[4]; // it works $echo $x{4}; // it works $x[] = 'e'; // it works $x{} = 'e'; // does not work $x = [1, 2]; // it works $x = {1, 2}; // does not work echo "${x[4]}"; // it works echo "${x{4}}"; // does not work echo "{$x[4]}"; // it works echo "{$x{4}}"; // it works 

Строки PHP: Строки PHP могут быть указаны четырьмя способами не только двумя способами:

1) Отдельные строки цитирования:

 $string = 'This is my string'; // print This is my string 

2) Строки с двойными строками:

 $str = 'string'; $string = "This is my $str"; // print This is my string 

3) Heredoc:

 $string = <<<EOD This is my string EOD; // print This is my string 

4) Nowdoc (начиная с PHP 5.3.0):

 $string = <<<'END_OF_STRING' This is my string END_OF_STRING; // print This is my string 

Оператор нулевого коалесцирования (??)

Этот оператор был добавлен в PHP 7.0 для обычного случая использования тройного оператора в сочетании с isset (). Он возвращает свой первый операнд, если он существует, и не является NULL; в противном случае он возвращает свой второй операнд.

 <?php // Fetches the value of $_GET['user'] and returns 'nobody' // if it does not exist. $username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // Coalescing can be chained: this will return the first // defined value out of $_GET['user'], $_POST['user'], and // 'nobody'. $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody'; ?> 

ВОПРОС:

Что означает => означает?


ОТВЕТ:

=> Является символом, который мы, люди, решили использовать для разделения пар "Key" => "Value" в ассоциативных массивах.

-разработка:

Чтобы понять это, мы должны знать, что такое ассоциативные массивы. Первое, что приходит, когда обычный программист думает о массиве ( в PHP ), будет чем-то вроде:

 $myArray1 = array(2016, "hello", 33);//option 1 $myArray2 = [2016, "hello", 33];//option 2 $myArray3 = [];//option 3 $myArray3[] = 2016; $myArray3[] = "hello"; $myArray3[] = 33; 

Если бы, если бы мы хотели вызвать массив в некоторой более поздней части кода, мы могли бы сделать:

 echo $myArray1[1];// output: hello echo $myArray2[1];// output: hello echo $myArray3[1];// output: hello 

Все идет нормально. Однако, как и людям, нам может быть трудно запомнить, что индекс [0] массива – это значение года 2016, индекс [1] массива – это приветствия , а индекс [2] массива – простой целочисленное значение . Альтернативой, которую мы должны были бы использовать, является использование так называемого ассоциативного массива . Ассоциативный массив имеет несколько отличий от последовательного массива ( это то, что было в предыдущих случаях, поскольку они увеличивают индекс, используемый в заданной последовательности, путем увеличения на 1 для каждого следующего значения ).

Различия ( между последовательным и ассоциативным массивом ):

  • Завершая объявление ассоциативного массива, вы не только включаете value того, что хотите помещать в массив, но также добавляете значение индекса (называемое key ), которое вы хотите использовать при вызове массива в последующих частях кода. Следующий синтаксис используется во время его объявления: "key" => "value" .

  • При использовании Ассоциативного массива значение key затем помещается внутри индекса массива для получения желаемого value .

Например:

  $myArray1 = array( "Year" => 2016, "Greetings" => "hello", "Integer_value" => 33);//option 1 $myArray2 = [ "Year" => 2016, "Greetings" => "hello", "Integer_value" => 33];//option 2 $myArray3 = [];//option 3 $myArray3["Year"] = 2016; $myArray3["Greetings"] = "hello"; $myArray3["Integer_value"] = 33; 

И теперь, чтобы получить тот же результат, что и раньше, значение key будет использоваться в индексе массивов:

 echo $myArray1["Greetings"];// output: hello echo $myArray2["Greetings"];// output: hello echo $myArray3["Greetings"];// output: hello 

ЗАКЛЮЧИТЕЛЬНАЯ ТОЧКА:

Таким образом, из приведенного выше примера довольно легко увидеть, что символ => используется для выражения отношения ассоциативного массива между каждой из пар key и value в массиве. ВО ВРЕМЯ инициализации значений внутри массива.

Оператор Null Coalesce php

Нулевой коалесцирующий оператор (??) был добавлен в PHP7 для обычного случая использования тройной связи в сочетании с isset (). Он возвращает свой первый операнд, если он существует и не является NULL, иначе он возвращает свой второй операнд, например следующий пример:

 $username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 

Вопрос :

Что означает «&» здесь в PHP?

Оператор PHP и & quot;

Делает жизнь более легкой, как только мы привыкнем к ней. (Внимательно посмотрите пример ниже)

& обычно проверяет биты, которые установлены как в $ a, так и в $ b.

вы даже заметили, как работают эти вызовы?

  error_reporting(E_ERROR | E_WARNING | E_PARSE); error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); error_reporting(E_ALL & ~E_NOTICE); error_reporting(E_ALL); 

Так что за всем выше стоит игра побитового оператора и бит.

Один из полезных примеров – простые конфигурации, такие как дать ниже, поэтому одно целое поле может хранить тысячи комбо для вас.

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

Пример, что вы будете любить

 <?php class Config { // our constants must be 1,2,4,8,16,32,64 ....so on const TYPE_CAT=1; const TYPE_DOG=2; const TYPE_LION=4; const TYPE_RAT=8; const TYPE_BIRD=16; const TYPE_ALL=31; private $config; public function __construct($config){ $this->config=$config; if($this->is(Config::TYPE_CAT)){ echo 'cat '; } if($this->is(Config::TYPE_DOG)){ echo 'dog '; } if($this->is(Config::TYPE_RAT)){ echo 'rat '; } if($this->is(Config::TYPE_LION)){ echo 'lion '; } if($this->is(Config::TYPE_BIRD)){ echo 'bird '; } echo "\n"; } private function is($value){ return $this->config & $value; } } new Config(Config::TYPE_ALL); // cat dog rat lion bird new Config(Config::TYPE_BIRD); //bird new Config(Config::TYPE_BIRD | Config::TYPE_DOG); //dog bird new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT); //rat lion bird 

== используется для проверки равенства без учета переменной типа данных

=== используется для проверки равенства для значения переменной, и обе эти переменные имеют одинаковый тип данных

пример

$ a = 5;

  1. if ($ a == 5) – он вернет true

  2. if ($ a == '5') – он вернет true, потому что, сравнивая это значение, php внутренне преобразует это строковое значение в целое число, а затем сравнивает значение

  3. if ($ a === 5) – он вернет true.

  4. if ($ a === '5') – он вернет false, потому что значение равно 5, но это значение 5 не является целым.

Оператор Null Coalesce "??" (Добавлено в PHP 7)

Not the catchiest name for an operator, but PHP 7 brings in the rather handy null coalesce so I thought I'd share an example.

In PHP 5, we already have a ternary operator, which tests a value, and then returns the second element if that returns true and the third if it doesn't:

 echo $count ? $count : 10; // outputs 10 

There is also a shorthand for that which allows you to skip the second element if it's the same as the first one: echo $count ?: 10; // also outputs 10

In PHP 7 we additionally get the ?? operator which rather than indicating extreme confusion which is how I would usually use two question marks together instead allows us to chain together a string of values. Reading from left to right, the first value which exists and is not null is the value that will be returned.

 // $a is not set $b = 16; echo $a ?? 2; // outputs 2 echo $a ?? $b ?? 7; // outputs 16 

This construct is useful for giving priority to one or more values coming perhaps from user input or existing configuration, and safely falling back on a given default if that configuration is missing. It's kind of a small feature but it's one that I know I'll be using as soon as my applications upgrade to PHP 7.

Here's the names of all the PHP operators (TOKEN).

Reference http://php.net/manual/en/tokens.php

введите описание изображения здесь