Я никогда не сталкивался с этим в javascript до сих пор, хотя я знаю:? означает другое, если. У меня возникли проблемы с выяснением того, как выложить его на PHP. Вот что я сделал - где я ошибаюсь, если это неправильно?
JSCRIPT
var midparams = dparams2.isramped() ? dparams2 : DailyParams.avg(dparams1, dparams2);
PHP
$midparams = $dparams2->isramped() if $dparams2 = $midparams else $DailyParams->avg($dparams1, $dparams2);
У вас есть 2 варианта. Первый - почти такой же, как JavaScript
$midparams = ($dparams2 -> isramped()) ? $dparams2 : $DailyParams->avg($dparams1, $dparams2);
Второй - более тривиальный:
if ($dparams2 -> isramped()) {
$midparams = $dparams2;
} else {
$midparams = $DailyParams->avg($dparams1, $dparams2);
}
Сначала говорится: midparams будет dparams, если выражение before истинно, или $DailyParams-> avg ($ dparams1, $ dparams2), если это не так. Второе - это одно и то же, но более прямолинейно.
Вы можете сделать это:
$midparams = $dparams2->isramped() ? $dparams2 : $DailyParams->avg($dparams1, $dparams2);
Или это:
if($dparams2->isramped()) {
$midparams = $dparams2;
} else {
$midparams = $DailyParams->avg($dparams1, $dparams2);
}
Вы можете больше узнать о тройном операторе в:
Он назывался тройным оператором; он так же использовался в PHP, как и в JavaScript -
/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // returns true
Прямо от блога Дэвида Уолша - http://davidwalsh.name/php-shorthand-if-else-ternary-operators
Также обратите внимание: я думаю, вы думаете об этом немного назад -
Это не (повторение, не), как это:
$var = (assign this value)? (if this is true): (otherwise, assign this value)
Он используется следующим образом:
$var = (is this true)? (then assign this value): (otherwise, assign this value)
EDIT Per @Pointy, указывая на это, есть небольшая разница между тем, как выражения вычисляются в JavaScript в PHP. См. Пример № 4 в документации. Хотя только сумасшедший напишет длинное неравнодушное тернарное выражение. http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
Это называется тернарным оператором. Он устанавливает переменную, основанную на условии. В PHP, что он говорит (в псевдокоде здесь):
setSomeVariable = (test condition) ? value if true : value if false;
Итак, если, например, вы хотели установить значение от $a
до 10, если $score
больше 100 или установить $a
to 0, если $score
меньше или равно 100, код будет выглядеть так:
$a = ($score > 100) ? 10 : 0;
См. Документацию здесь: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
if
иelse
в середине выражения, как это?