Javascript в PHP еще, если преобразование оператора «:?»

1

Я никогда не сталкивался с этим в javascript до сих пор, хотя я знаю:? означает другое, если. У меня возникли проблемы с выяснением того, как выложить его на PHP. Вот что я сделал - где я ошибаюсь, если это неправильно?

JSCRIPT

var midparams = dparams2.isramped() ? dparams2 : DailyParams.avg(dparams1, dparams2);

PHP

$midparams = $dparams2->isramped() if $dparams2 = $midparams else $DailyParams->avg($dparams1, $dparams2);
  • 0
    Откуда вы взяли, что PHP разрешает if и else в середине выражения, как это?
Теги:
ternary-operator

4 ответа

0
Лучший ответ

У вас есть 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), если это не так. Второе - это одно и то же, но более прямолинейно.

  • 0
    Спасибо за то, что поместили это в форму кода для себя - я читал о троичном операторе, но не мог понять это до этого. Спасибо!
1

Вы можете сделать это:

$midparams = $dparams2->isramped() ? $dparams2 : $DailyParams->avg($dparams1, $dparams2);

Или это:

if($dparams2->isramped()) {
  $midparams = $dparams2;
} else {
  $midparams = $DailyParams->avg($dparams1, $dparams2);
}

Вы можете больше узнать о тройном операторе в:

Руководство PHP

0

Он назывался тройным оператором; он так же использовался в 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

  • 0
    Нет, это не то же самое в PHP.
  • 0
    Если ответ неправильный, объясните, пожалуйста, как и почему.
Показать ещё 5 комментариев
0

Это называется тернарным оператором. Он устанавливает переменную, основанную на условии. В 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

  • 1
    @Pointy Я удалил это заявление. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню