-1

在Javascript中,我们可以通过以下代码做到这一点:

function test(a) { 
  a && (console.log("somthing"), executeOtherFunction()); 
}

上面的代码是以下代码的简写:

function test(a){
  if(a){
    console.log("something");
    executeOtherFunction()
  }
}

有可能让它适用于 PHP 吗?

我不是说console.log在 PHP 中使用,只是想在 PHP 中使用相同的东西。

4

3 回答 3

2

在 PHP 中,条件评估也存在短路。使用AND(或&&),只要false遇到值,评估就会停止。

但是,,PHP 不支持逗号运算符。因此,您不能通过用 . 分隔它们来执行两个表达式,。仅允许在 for 循环中作为语法糖:

for ($a = 2, $b = 4; $a < 3; $a++)
           ^

这种结构也经常与or关键字一起使用:

someAction() or log("someAction() execution failed");

这将仅在someAction()返回时记录错误false

于 2013-11-04T09:19:59.850 回答
2

看起来这在 PHP 中有效。

function test(a) { 
  a && (console_log("somthing") xor executeOtherFunction()); 
}

我认为 PHP 能够将所有内容都转换为 bool 而不会出错。

于 2013-11-04T10:12:20.050 回答
0

正如 Guillaume Poussel 所说,PHP 知道条件评估中的短路,但不知道通过,.

如果你愿意真正滥用PHP 的弱类型系统,你可以使用这样的东西:

if ($a && function1() . function2() ) ;
                      ^ concatenate the results of the functions as strings

显然,这仅在您不需要函数的返回值时才有效。

免责声明:我不建议在生产代码中使用它,但这是一个有趣的思想实验

于 2013-11-04T09:39:08.533 回答