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

Вопросительный знак PHP

$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? 'style="display:none;"' : '';

Может кто-нибудь объяснить мне, что этот знак вопроса делает в этой строке кода? Большое спасибо!

4b9b3361

Ответ 1

Это называется Ternary Operator, и он распространен на нескольких языках, включая PHP, Javascript, Python, Ruby...

$x = $condition ? $trueVal : $falseVal;

// same as:

if ($condition) {
    $x = $trueVal;
} else {
    $x = $falseVal;
}

Один очень важный момент, который следует учитывать при использовании троичного в PHP:

Примечание. Обратите внимание, что тернарный оператор является оператором и что он не оценивает переменную, а результат результата. Это важно знать, хотите ли вы вернуть переменную по ссылке. Оператор возвращает $var == 42? $a: $b; поэтому функция возврата по ссылке не будет работать и предупреждение будет выпущено в более поздних версиях PHP. источник

Ответ 2

Фактически это условие представляет собой Тройную операцию, условное выражение:

// works like:    (condition) ? if-true : if-false;

$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ?  'style="display:none;"':'';

в вашем случае $hideCode будет иметь значение style="display:none;", если

$likesObj->isAlreadyLikedByUser(facebookUID())

вернет true, иначе он будет пустым или пустым.

Ответ 3

Это более короткая версия оператора IF.

$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? ' style="display:none;"':'';

если на самом деле:

if($likesObj->isAlreadyLikedByUser(facebookUID()))
{
   $hideCode = 'style="display:none"';
}
else
{
 $hideCode = "";
}

Для пуризма:

Он представляет Тройную операцию

Ответ 4

Это простая логика типа if-then-else:

(condition) ? (if-true-value) : (if-false-value)

поэтому в вашем случае условие проверяется (т.е. страница уже понравилась пользователю); если да (истинное условие), то style="display:none;" печатается так, чтобы какой бы элемент, который вы используете, не отображался. В противном случае печатается пустая строка, которая, естественно, является эквивалентом того, что она вообще ничего не печатает.

Ответ 5

Это тернарный оператор: это означает

если $likesObj->isAlreadyLikedByUser(facebookUID()) истинно присваивает переменной style="display:none;, иначе назначьте ''

Ответ 6

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

Ответ 7

Это очень компактное if-предложение.

(условие)?:

Ответ 8

$hideCode = $likesObj- > isAlreadyLikedByUser (facebookUID())? 'Стиль = "дисплей: нет;" ': '';

Это то же самое, что и следующее:

if ($likesObj->isAlreadyLikedByUser(facebookUID()))
{
    $hideCode = 'style="display:none;"';
}
else
{
    $hideCode = '';
}