Справка - Что означает этот символ в 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 ]

57 голосов
/ 31 октября 2016

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

Этот оператор был добавлен в 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';
?>
56 голосов
/ 17 декабря 2015

Строки 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
40 голосов
/ 12 июня 2016

ВОПРОС:

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


ОТВЕТ:

=>Является ли символ, который мы, люди, решили использовать для разделения "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] массива является значением year 2016, индекс [1] массива является greetings и индекс [2] массива является простым целочисленным значением .Тогда у нас есть альтернатива - использовать так называемый ассоциативный массив .Ассоциативный массив имеет несколько отличий от Sequential Array (, как и в предыдущих случаях, поскольку они увеличивают индекс, используемый в предварительно определенной последовательности, путем увеличения на 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 пар в массиве DURING инициация значений в массиве.

30 голосов
/ 18 марта 2017

Вопрос :

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

PHP "&" operator

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

& обычно проверяет, установлены ли биты, установленные как в $ 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
24 голосов
/ 03 октября 2017

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

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

Пример

$a = 5

  1. if ($a == 5) - будетоценивать как истинное

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

  3. if ($a === 5) - будет иметь значение true

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

23 голосов
/ 02 июля 2017

Null Coalesce Operator php

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

$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 
21 голосов
/ 06 декабря 2017

Нулевой оператор Coalesce "??" (Добавлено в PHP 7)

Не самое запоминающееся имя для оператора, но PHP 7 содержит довольно удобное объединение нулей, поэтому я решил поделиться примером.

В PHP 5 у нас уже есть троичный оператор, который проверяет значение, а затем возвращает второй элемент, если это возвращает true, и третий, если это не так:

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

Существует также сокращение для того, что позволяет пропустить второй элемент, если он совпадает с первым: echo $ count?: 10; // также выводит 10

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

// $a is not set
$b = 16;

echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16

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

7 голосов
/ 16 января 2019

Объявление типа возвращаемого значения Nullable

В PHP 7 добавлена ​​поддержка объявлений возвращаемых типов. Аналогично объявлениям типа аргумента, декларации возвращаемого типа определяют тип значения, которое будет возвращено из функции. Для объявлений возвращаемого типа доступны те же типы, что и для объявлений типов аргументов.

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

Начиная с PHP 7.1.0, возвращаемые значения могут быть помечены как обнуляемые, если перед именем типа ставить знак вопроса (?). Это означает, что функция возвращает либо указанный тип, либо NULL.

<?php
function get_item(): ?string {
    if (isset($_GET['item'])) {
        return $_GET['item'];
    } else {
        return null;
    }
}
?>

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...