Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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
&引用;“警卫”;PHP中的类运算符JavaScript_Php_Javascript - Fatal编程技术网

&引用;“警卫”;PHP中的类运算符JavaScript

&引用;“警卫”;PHP中的类运算符JavaScript,php,javascript,Php,Javascript,我喜欢在JavaScript中这样做: function (a, b, c) { var foo = a || b || c; return foo.bar; } 有没有一种快速的方法可以使用回退进行赋值,或者它需要一个自定义的函数?PHP5.3引入了?:运算符(不要与三元条件运算符混淆,如图所示)。我不使用PHP,但我想它应该是这样的: $foo = $a ?: $b ?: $c 见: 由于PHP5.3,可以省略三元运算符的中间部分。表达式expr1?:如果expr1的计

我喜欢在JavaScript中这样做:

function (a, b, c) {
    var foo = a || b || c;
    return foo.bar;
}

有没有一种快速的方法可以使用回退进行赋值,或者它需要一个自定义的
函数

PHP5.3引入了
?:
运算符(不要与三元条件运算符混淆,如图所示)。我不使用PHP,但我想它应该是这样的:

 $foo = $a ?: $b ?: $c
见:

由于PHP5.3,可以省略三元运算符的中间部分。表达式expr1?:如果expr1的计算结果为TRUE,则expr3返回expr1,否则返回expr3


快乐的编码。

不知道如何理解你的第一句话。还要注意的是,由于与等式进行比较,这仅具有有限的用途,例如
a=false,b=0,c=1
将返回1。还请注意,它将返回表达式的结果,因此设置数据[a]时,
isset(data[a])?:“bar”
将返回
true
;当您可能期望它返回数据[a]的值时。另一方面,手册建议不要堆叠ternary。@Gordon True。。。在PHP中,它被混搭为“特殊的三元条件语法”。我想我已经习惯了被称为“或”或类似的称呼。至于返回表达式的结果——这是它添加的长期缺少的特性;-)我想,
a?:b
可以看作是
a的“快捷语法”?a:b
避免对
a
进行两次评估。我不知道
?:
的其他怪癖是如何影响它的。嵌套不是一个问题,因为wrt没有歧义。意图和语法——优先权之外——因为它是一个二元运算符(与其他形式的三元运算符相比)。