Javascript 到 PHP 否则如果“:?”运算符转换

Javascript to PHP else if ": ?" operator conversion

到目前为止,我在 javascript 中从未遇到过这种情况,尽管我知道:?意思是如果。我无法弄清楚如何在 PHP 中进行布局。这是我所做的-如果错了,我哪里错了?

JSCRIPT

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

PHP

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

你可以这样做:

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

或者这样:

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

您可以在以下位置阅读有关三元运算符的更多信息:

PHP Manual

您有 2 个选择。第一个几乎与 JavaScript

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

第二个比较琐碎:

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

第一个说:如果前面的语句为真,则 midparams 将为 dparams,否则为 $DailyParams->avg($dparams1, $dparams2)。第二个是同样的事情,但以更直接的方式。

这叫做三元运算符。它根据条件设置变量。在 PHP 中,它的意思(此处为伪代码)是:

setSomeVariable = (test condition) ? value if true : value if false;

因此,例如,如果 $score 大于 100,您希望将 $a 的值设置为 10,或者如果 $score,则将 $a 的值设置为 0 =] 小于或等于 100,代码将如下所示:

$a = ($score > 100) ? 10 : 0;

在此处查看文档:http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

这叫做三元运算符;它在 PHP 中的使用方式与在 JavaScript -

中的使用方式相同
/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // returns true

直接来自 David Walsh 的博客 - 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 pointy-ing this out,JavaScript 和 PHP 中的语句评估方式略有不同 - 请参阅文档中的示例 #4。虽然只有疯子才会写出冗长无括号的三元表达式。 http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary