Подтвердить что ты не робот

Вопрос синтаксиса PHP: что означает знак вопроса и двоеточие?

Возможный дубликат:
быстрый вопрос синтаксиса php

return $add_review ? FALSE : $arg;

Что означают знак вопроса и двоеточие?

Спасибо

4b9b3361

Ответ 1

Это PHP тернарный оператор (также известный как условный оператор) - если первый операнд оценивает true, оценивает его как второй операнд, как третий операнд.

Подумайте об этом как о выражении "if", которое вы можете использовать в выражениях. Может быть очень полезно при создании кратких заданий, которые зависят от некоторого условия, например.

$param = isset($_GET['param']) ? $_GET['param'] : 'default';

Там также сокращенная версия этого (в PHP 5.3 и далее). Вы можете оставить средний операнд. Оператор будет оценивать как первый операнд, если он истинный, и третий операнд в противном случае. Например:

$result = $x ?: 'default';

Стоит отметить, что приведенный выше код при использовании переменной $_GET или $_POST будет вызывать уведомление об индексе undefined и предотвращать необходимость использования более длинной версии с isset или оператор нулевой коалесценции, который вводится в PHP7:

$param = $_GET['param'] ?? 'default';

Ответ 2

Это тройная форма оператора if-else. Вышеприведенное утверждение в основном читается следующим образом:

if ($add_review) then {
    return FALSE; //$add_review evaluated as True
} else {
    return $arg //$add_review evaluated as False
}

Подробнее о trernary op в PHP: http://www.addedbytes.com/php/ternary-conditionals/