Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript到PHP,如果“其他”:&引用;运算符转换_Javascript_Php_Ternary Operator - Fatal编程技术网

Javascript到PHP,如果“其他”:&引用;运算符转换

Javascript到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

到目前为止,我从未在javascript中遇到过这种情况,尽管我知道:?如果有,就意味着别的。我很难弄清楚如何在PHP中布局它。这就是我所做的——如果我错了,我会错在哪里

JSCRIPT

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/<代码>中间的一个表达式?谢谢你把它变成代码形式给我自己-我一直在读三元运算符,但直到现在还不能完全掌握它。非常感谢!