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);
}
您可以在以下位置阅读有关三元运算符的更多信息:
您有 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
到目前为止,我在 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);
}
您可以在以下位置阅读有关三元运算符的更多信息:
您有 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