Вопрос по синтаксису PHP:Что означают знак вопроса и двоеточие?[дубликат]

StackOverflow https://stackoverflow.com/questions/1276909

  •  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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top