Javascript到PHP,如果“其他”:&引用;运算符转换
到目前为止,我从未在javascript中遇到过这种情况,尽管我知道:?如果有,就意味着别的。我很难弄清楚如何在PHP中布局它。这就是我所做的——如果我错了,我会错在哪里 JSCRIPTJavascript到PHP,如果“其他”:&引用;运算符转换,javascript,php,ternary-operator,Javascript,Php,Ternary Operator,到目前为止,我从未在javascript中遇到过这种情况,尽管我知道:?如果有,就意味着别的。我很难弄清楚如何在PHP中布局它。这就是我所做的——如果我错了,我会错在哪里 JSCRIPT var midparams = dparams2.isramped() ? dparams2 : DailyParams.avg(dparams1, dparams2); PHP 您可以这样做: $midparams = $dparams2->isramped() ? $dparams2 : $Dail
var midparams = dparams2.isramped() ? dparams2 : DailyParams.avg(dparams1, dparams2);
PHP
您可以这样做:
$midparams = $dparams2->isramped() ? $dparams2 : $DailyParams->avg($dparams1, $dparams2);
或者这个:
if($dparams2->isramped()) {
$midparams = $dparams2;
} else {
$midparams = $DailyParams->avg($dparams1, $dparams2);
}
有关三元运算符的更多信息,请参阅:
你有两个选择。第一个与JavaScript几乎相同
$midparams = ($dparams2 -> isramped()) ? $dparams2 : $DailyParams->avg($dparams1, $dparams2);
第二个更为琐碎:
if ($dparams2 -> isramped()) {
$midparams = $dparams2;
} else {
$midparams = $DailyParams->avg($dparams1, $dparams2);
}
第一种说法是:若前面的语句为true,则midparams将是dparams;若不是true,则为$DailyParams->avg($dparams1,$dparams2)。第二个是相同的东西,但以更直接的方式。这被称为三元运算符。它根据条件设置变量。在PHP中,它所说的(在这里的伪代码中)是: 因此,例如,如果要将
$a
的值设置为10(如果$score
大于100),或者将$a
的值设置为0(如果$score
小于或等于100),则代码如下所示:
$a = ($score > 100) ? 10 : 0;
请参阅此处的文档:它被称为三元运算符;它在PHP中的使用方式与在JavaScript中的使用方式相同-
/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // returns true
直接来自大卫·沃尔什的博客-
另请注意:我认为您的想法有点倒退-
它不是(重复,不是)这样使用的:
$a = ($score > 100) ? 10 : 0;
$var=(分配此值)?(如果为真):(否则,指定此值)
它是这样使用的:
$a = ($score > 100) ? 10 : 0;
$var=(这是真的吗)?(然后分配此值):(否则,分配此值)
EDITPer@Pointy-Pointy指出这一点,在PHP的JavaScript中对语句的求值方式略有不同-参见文档中的示例4。虽然只有疯子才会写一个长篇大论的、没有激情的三元表达 不,在PHP中不一样。如果答案是错误的,那么解释一下please.PHP如何/为什么在解释
序列时有右偏:代码>操作,而JavaScript(以及几乎所有其他具有该结构的语言)是左偏的。@Pointy,所以它们是相同的,除非你嵌套它们而不加括号?嵌套的三元组很糟糕,不加括号的情况下它们会加倍。@Pointy我删除了该语句。谢谢。你在哪里得到PHP允许<>代码>如果和<代码> EX/<代码>中间的一个表达式?谢谢你把它变成代码形式给我自己-我一直在读三元运算符,但直到现在还不能完全掌握它。非常感谢!