Вопрос по синтаксису PHP:Что означают знак вопроса и двоеточие?[дубликат]
-
16-09-2019 - |
Вопрос
Возможный дубликат:
быстрый вопрос по синтаксису PHP
return $add_review ? FALSE : $arg;
Что означают знак вопроса и двоеточие?
Спасибо
Решение
Это PHP тернарный оператор (также известный как условный оператор) — если первый операнд имеет истинное значение, вычисляется как второй операнд, в противном случае — как третий операнд.
Думайте об этом как об операторе «если», который можно использовать в выражениях.Может быть очень полезно при выполнении кратких заданий, которые зависят от некоторых условий, например.
$param = isset($_GET['param']) ? $_GET['param'] : 'default';
Существует также сокращенная версия этого (в PHP 5.3 и более поздних версиях).Вы можете опустить средний операнд.Оператор будет оценивать первый операнд, если он истинен, и третий операнд в противном случае.Например:
$result = $x ?: 'default';
Стоит отметить, что приведенный выше код при использовании т.е.Переменная $_GET или $_POST выдаст уведомление о неопределенном индексе, и чтобы предотвратить это, нам нужно использовать более длинную версию с isset
или нулевой оператор объединения который представлен в PHP7:
$param = $_GET['param'] ?? 'default';
Другие советы
Это троичная форма оператора if-else.Приведенное выше заявление в основном звучит так:
if ($add_review) then {
return FALSE; //$add_review evaluated as True
} else {
return $arg //$add_review evaluated as False
}
Более подробную информацию о тройной операции в PHP см. здесь: http://www.addedbytes.com/php/ternary-conditionals/