我有一个关于PHP的返回语句的快速问题。在C++中,我们能够执行以下操作:
... function body ...
return (foo = bar, biz());
其中,在返回biz()
结果之前将变量bar
分配给foo
。
这在 PHP 中可能(或类似的东西)吗?PHP 中的上述语句会导致解析错误。现在,我知道我可以简单地在 return 语句之前执行赋值,但这只是一个人为的例子,我对可行性很好奇。
编辑:提供更多说明。这是我在PHP中基本上尝试做的事情:
return ($foo = $bar, biz())
|| ($foo = $bar, baz())
|| ($foo = $bar, qux());
foo
是全局引用,biz
在其中进行修改。如果biz
返回 false,则测试 OR 语句中的下一段。由于返回biz
false,所以我需要在执行baz
之前"重置"foo
的值,依此类推。
我知道我在这里试图做的事情是不纯的,但我只是好奇在 PHP 中是否有等效(或至少类似的东西)是可能的。
不,不幸的是,PHP 实际上没有逗号运算符,除了在 for 循环的 expr1 中。在其他任何地方,逗号仅用于将参数分隔到函数或语言结构。
您可以对自己的逗号运算符用户函数进行排序,该函数仅返回传递给其中的最后一个参数。这是我的镜头:
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());
老实说,我不建议使用它。这就是为什么我的简短回答是"不"。
您可以在数组中返回它们
return Array($foo = "bar", biz());
该数组将包含:
Array ( [0] => bar [1] => A )