$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? 'style="display:none;"' : '';
Может кто-нибудь объяснить мне, что этот знак вопроса делает в этой строке кода? Большое спасибо!
$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? 'style="display:none;"' : '';
Может кто-нибудь объяснить мне, что этот знак вопроса делает в этой строке кода? Большое спасибо!
Это называется 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. источник
Фактически это условие представляет собой Тройную операцию, условное выражение:
// works like: (condition) ? if-true : if-false;
$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? 'style="display:none;"':'';
в вашем случае $hideCode
будет иметь значение style="display:none;"
, если
$likesObj->isAlreadyLikedByUser(facebookUID())
вернет true, иначе он будет пустым или пустым.
Это более короткая версия оператора IF.
$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? ' style="display:none;"':'';
если на самом деле:
if($likesObj->isAlreadyLikedByUser(facebookUID()))
{
$hideCode = 'style="display:none"';
}
else
{
$hideCode = "";
}
Для пуризма:
Он представляет Тройную операцию
Это простая логика типа if-then-else:
(condition) ? (if-true-value) : (if-false-value)
поэтому в вашем случае условие проверяется (т.е. страница уже понравилась пользователю); если да (истинное условие), то style="display:none;"
печатается так, чтобы какой бы элемент, который вы используете, не отображался. В противном случае печатается пустая строка, которая, естественно, является эквивалентом того, что она вообще ничего не печатает.
Это тернарный оператор: это означает
если $likesObj->isAlreadyLikedByUser(facebookUID())
истинно присваивает переменной style="display:none;
, иначе назначьте ''
Это часть тернарный оператор. Первая часть - это условие выражения if-else. После вопросительного знака будет блок "if", а после двоеточия - блок "else".
Это очень компактное if-предложение.
(условие)?:
$hideCode = $likesObj- > isAlreadyLikedByUser (facebookUID())? 'Стиль = "дисплей: нет;" ': '';
Это то же самое, что и следующее:
if ($likesObj->isAlreadyLikedByUser(facebookUID()))
{
$hideCode = 'style="display:none;"';
}
else
{
$hideCode = '';
}