it-swarm.com.ru

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

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

return $add_review ? FALSE : $arg;

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

Спасибо

62
Petkun

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

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

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

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

$result = $x ?: 'default';

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

$param = $_GET['param'] ?? 'default';
133
Paul Dixon

Это троичная форма оператора 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/

17
Cristian Ivascu