Где я могу прочитать об условностях, сделанных с помощью?? и ":" (двоеточие)?

Возможный дубликат:
Ссылка - что означает этот символ в PHP?

Я выполнял условные условия с if/else или через год или около того. Если посмотреть на какой-то новый код, я вижу условное выражение, которое, как представляется, использует ? и : вместо if и else. Я хотел бы узнать больше об этом, но я не уверен, что делать в Google, чтобы найти статьи, объясняющие, как это работает. Как я могу это сделать?

Ответ 1

Это Терминальный оператор.

Основное использование - это что-то вроде

$foo = (if this expressions returns true) ? (assign this value to $foo) : (otherwise, assign this value to $foo)

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

Я думаю, что причина, по которой вы видите это во множестве современных, OO-стиле PHP, заключается в том, что без статической типизации вам нужно быть параноидальным по типам в любой конкретной переменной, а однострочный тернар менее загроможден, чем 7 строка if/else условна.

Кроме того, в знак уважения к комментариям и истине в именовании, прочитайте все о the тернарный оператор s в области информатики.

Ответ 2

Это был бы условный оператор. Это почти одна строка, если /then/else:

if(someCondition){
    $x = doSomething();
}
else{
    $x = doSomethingElse();
}

становится:

$x = someCondition ? doSomething() : doSomethingElse();

Ответ 3

Это:

условие? do_if_true: do_if_false

Итак, например, в приведенном ниже примере будет выполняться do- > something().

$true = 1;
$false = 0

$true ? $do->something() : $do->nothing();

Но в приведенном ниже примере do- > nothing() будет запущен.

$false ? $do->something() : $do->nothing();

Ответ 4

Это тернарный оператор в PHP. Это сокращение, если /else, формат:

condition ? true expression : false expression;