Каковы операторы PHP “?” и “:” названный и что они делают?

Это позволяет дифференцирование поразрядной константы и логической константы. Логическая константа - когда объект не изменяется способом, который видим через открытый интерфейс, как Ваш пример блокировки. Другим примером был бы класс, который вычисляет значение в первый раз, когда его требуют и кэширует результат.

, Так как C++ 11 mutable может использоваться на лямбде, чтобы обозначить, что вещи, полученные значением, являются модифицируемыми (они не по умолчанию):

int x = 0;
auto f1 = [=]() mutable {x = 42;};  // OK
auto f2 = [=]()         {x = 42;};  // Error: a by-value capture cannot be modified in a non-mutable lambda
44
задан Peter Mortensen 29 November 2015 в 13:57
поделиться

8 ответов

This is the conditional operator.

$x ? $y : $z

means "if $x is true, then use $y; otherwise use $z".

It also has a short form.

$x ?: $z

means "if $x is true, then use $x; otherwise use $z".

People will tell you that ?: is "the ternary operator". This is wrong. ?: is a ternary operator, which means that it has three operands. People wind up thinking its name is "the ternary operator" because it's often the only ternary operator a given language has.

76
ответ дан 26 November 2019 в 21:43
поделиться

Это называется тернарным оператором . Если первое выражение истинно, используется HTTPS_SERVER , иначе выбирается HTTP_SERVER .

По сути, это сокращение if , и приведенный выше код может также можно переписать следующим образом:

if ($request_type == 'SSL') {
   HTTPS_SERVER;
}
else {
   HTTP_SERVER;
}
12
ответ дан 26 November 2019 в 21:43
поделиться

Иногда это называют тернарным условным оператором. Тернарный означает, что он имеет три аргумента, например x? y: z . По сути, он проверяет, истинно ли x ; если это так, тогда введите y вместо этой операции, в противном случае z .

$hello = $something ? "Yes, it's true" : "No, it's false";
6
ответ дан 26 November 2019 в 21:43
поделиться

Это однострочный оператор if:

condition ? true : false

Переведенный в обычный оператор if в вашем случае, это будет:

if($request_type == 'SSL') HTTPS_SERVER;
else HTTP_SERVER;
0
ответ дан 26 November 2019 в 21:43
поделиться

По сути, это интересный способ написания оператора if - else . Некоторые говорят, что его легче читать, другие - нет.

Тернарный оператор в Википедии

0
ответ дан 26 November 2019 в 21:43
поделиться

Как говорит Джон Т., он называется тернарным оператором и по сути является сокращенной версией оператора if / else. Ваш пример, как полный оператор if / else, будет выглядеть так:

if($request_type == 'SSL')
{
    HTTPS_SERVER;
}
else
{
    HTTP_SERVER;
}
-1
ответ дан 26 November 2019 в 21:43
поделиться

This is a short way of writing if sentences. It is also used in other languages like Java, JavaScript and others.

Your code,

$protocol = $request_type == 'SSL' ? HTTPS_SERVER : HTTP_SERVER;

can be written like this:

if ($request_type == 'SSL')
    $protocol = HTTPS_SERVER;
else
    $protocol = HTTP_SERVER;
2
ответ дан 26 November 2019 в 21:43
поделиться

Условный оператор ? : - оператор, который используется для проверки условия и выбора значения в зависимости от значения условия. Это выражается в следующей форме:

variable = condition ? expression1 : expression2;

Работает следующим образом ...

  1. Сначала оценивается условие .
  2. Если условие истинно, то выражение1 оценивается. А значение выражение1 присваивается переменной .
  3. Если условие ложно, то вычисляется выражение2 . И значение выражение2 присваивается переменной.

Например:

x = (a>b) ? 5 : 9

Здесь для x сначала оценивается условие (a> b). Если это условие выполняется, то x станет значением 5 (т.е. x = 5). Но если условие (a> b) становится ложным, тогда x будет иметь значение 9 (т.е. x = 9).

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

Иногда условный оператор ? : также называется тернарным оператором. Это потому, что в нем задействованы три операнда. Например:

x ? y : z

Здесь x, y и z - три операнда. Если условие x истинно, то присваивается значение y, иначе присваивается значение z.

5
ответ дан 26 November 2019 в 21:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: