标签:php
我对PHP的return语句有一个快速的问题.在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:
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); }
使用逗号功能,EditYour示例代码如下所示:
return comma($foo = $bar, biz())
|| comma($foo = $bar, baz())
|| comma($foo = $bar, qux());
老实说,我不建议您使用此功能.这就是为什么我的简短回答是“不”.
标签:php
来源: https://codeday.me/bug/20191201/2079183.html