是否可以在PHP return语句中执行赋值?

时间:2012-06-10 23:57:05

标签: php

我有一个关于PHP的return语句的快速问题。在C ++中,我们能够执行以下操作:

... function body ...
return (foo = bar, biz());

在返回bar的结果之前,变量foo已分配给biz()

PHP中是否可能(或类似)? PHP中的上述语句导致解析错误。现在,我知道我可以在返回语句之前简单地执行赋值,但这只是一个人为的例子,我对可行性很好奇。

修改:提供更多说明。以下是我基本上尝试用PHP做的事情:

return ($foo = $bar, biz())
    || ($foo = $bar, baz())
    || ($foo = $bar, qux());

foobiz修改的全局参考。如果biz返回false,则测试OR语句中的下一个段。由于biz返回false,我需要在执行foo之前“重置”baz的值,依此类推。

我知道我在这里尝试做的事情是不纯的,但我只是好奇,在PHP中可能是等同的(或者至少是类似的事情)。

2 个答案:

答案 0 :(得分:3)

不,不幸的是,除了for循环的expr1之外,PHP实际上没有逗号运算符。在其他任何地方,逗号只用于将参数与函数或语言结构分开。

您可以对自己的逗号运算符用户函数进行排序,该函数只返回传递给它的最后一个参数。这是我的镜头:

function comma(){ return func_get_arg(func_num_args() - 1); }

有了这个你可以使用:

return comma($foo = $bar, biz());

以下完整代码输出Hello

<?php

function foo(){
  $bar = 'Hello';
  return comma($foo = $bar, bar($foo));
}

function bar($foo){
    echo $foo;
}

foo();

function comma(){ return func_get_arg(func_num_args() - 1); }

修改

您的示例代码使用逗号函数,如下所示:

return comma($foo = $bar, biz())
    || comma($foo = $bar, baz())
    || comma($foo = $bar, qux());

我老实说不能推荐使用它。这就是为什么我的简短回答是“不”。

答案 1 :(得分:0)

你可以在数组中返回它们

return Array($foo = "bar", biz());

数组将包含:

Array ( [0] => bar [1] => A )