在Javascript中,我们可以通过以下代码执行此操作:
function test(a) {
a && (console.log("somthing"), executeOtherFunction());
}
以上代码简写为:
function test(a){
if(a){
console.log("something");
executeOtherFunction()
}
}
有可能让这个适用于PHP吗?
我并不是说在PHP中使用console.log
,只是想在PHP中使用相同的东西。
答案 0 :(得分:2)
在PHP中,条件评估中还有短路。
使用AND
(或&&
)时,只要遇到false
值,评估就会停止。
但是,PHP不支持逗号,
运算符。因此,您不能通过用,
分隔它们来执行两个表达式。它只允许作为语法糖在for循环中使用:
for ($a = 2, $b = 4; $a < 3; $a++)
^
此结构也经常与or
关键字一起使用:
someAction() or log("someAction() execution failed");
仅当someAction()
返回false
时才会记录错误。
答案 1 :(得分:2)
它看起来适用于PHP。
function test(a) {
a && (console_log("somthing") xor executeOtherFunction());
}
我认为PHP能够将所有内容转换为bool而不会出错。
答案 2 :(得分:0)
正如Guillaume Poussel所说,PHP知道条件评估中的短路,但不知道通过,
链接代码块。
如果你愿意真的滥用 PHP的弱打字系统,你可以使用这样的东西:
if ($a && function1() . function2() ) ;
^ concatenate the results of the functions as strings
显然只有在你不需要函数的返回值时才会有效。
免责声明:我不建议在生产代码中使用此功能,但这是一个有趣的思想实验