Справка - Что означает этот символ в PHP? - PullRequest
4203 голосов
/ 17 сентября 2010

Что это?

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

Почему это?

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

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

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

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

Список

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


& Битовые операторы или Ссылки


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


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


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


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


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


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


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


?? Нулевой оператор объединения (начиная с PHP 7)


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


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


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


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


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


=> Массивы


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


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


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


<<< Heredoc или Nowdoc


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


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


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


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


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


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


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


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


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


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


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


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

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


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


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


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


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


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


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


** Экспонирование (начиная с PHP 5.6)


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


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


Ответы [ 18 ]

1079 голосов
/ 17 сентября 2010

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

++ Оператор увеличения

-- Оператор уменьшения

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.

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

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

Например:

$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++;
}

Once z достигается aa следующее и т. Д.

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


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

409 голосов
/ 31 октября 2012

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

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

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

257 голосов
/ 29 ноября 2012

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

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

248 голосов
/ 31 октября 2012
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"
238 голосов
/ 08 июля 2015

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

Добавлено в 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;
});
217 голосов
/ 24 апреля 2013

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

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

__FILE__: полный путь и имя файла файла,Если используется внутри включения, возвращается имя включенного файла.Начиная с PHP 4.0.2, __FILE__ всегда содержит абсолютный путь с разрешенными символическими ссылками, тогда как в более старых версиях он содержал относительный путь при некоторых обстоятельствах.Если используется внутри включения, возвращается каталог включенного файла.Это эквивалентно 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).

Source

136 голосов
/ 31 октября 2013

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

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)
122 голосов
/ 18 января 2016

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


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

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

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

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

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

  • - $ a : напротив $ a.
  • $ a + $ b : сумма $ a и $ b.
  • $ a - $ b : разница $ a и $ b.
  • $ a * $ b : произведение $ a и $ b.
  • $ a / $ b : отношение $ a и $ b.
  • $ a% $ b : остаток от деленного $на $ b.
  • $ a ** $ b : результат повышения $ a до $ b'th power (введено в 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</strong>: сдвинуть биты шагов $ 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.$ b
  • $ a & = $ b : То же, что $ a = $ a & $ b
  • $ a | = $ b :То же, что $ a = $ a |$ b
  • $ a ^ = $ b : аналогично $ a = $ a ^ $ b
  • $ a << = $ b </strong>: То же, что $ a = $ a << $ b </li> $ a >> = $ b : То же, что $ a = $ a >> $ b

Примечание

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

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

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

94 голосов
/ 11 октября 2015

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

Примеры для <=> Оператор космического корабля (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
// Comparison is case-sensitive
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
64 голосов
/ 23 ноября 2015

{} фигурные скобки

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

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...