如何解决闭包会导致php-5.2中的语法错误
| 我正在从这篇文章中执行以下代码:preg_match_all(\"/\'(.+)\' ((\\w+)\\(? ?(\\d*) ?\\)?)/\",$sql,$_matches,PREG_SET_ORDER);
$matches = array_map(function($v) {return array(trim($v[2]),$v[1]);},$_matches);
但是我收到以下错误:
Parse error: syntax error,unexpected T_FUNCTION,expecting \')\' in SqlParser.php on line 29
我花了一些时间解决此问题,但找不到解决方案。
有人可以告诉我这是什么问题吗?
解决方法
我假设您使用的PHP版本低于5.3,该版本不支持闭包(您已在注释中确认了这一点)。下面的代码应该工作。我只是将匿名函数转换为普通函数。
function map_cb($v){
return array(trim($v[2]),$v[1]);
}
preg_match_all(\"/\'(.+)\' ((\\w+)\\(? ?(\\d*) ?\\)?)/\",$sql,$_matches,PREG_SET_ORDER);
$matches = array_map(\"map_cb\",$_matches);
, 除非您使用的是php 5.3,否则您不能使用这样的匿名函数。根据有关回调的php文档,
从PHP 5.3.0起,还可以
将闭包传递给回调
参数。
您可以使用create_function()
来创建匿名。函数,并且可以在PHP 5.3之前的版本中使用。或使用GWW的答案,也应该起作用。
否则,如果您有兴趣进一步了解anon。 PHP 5.3+中的函数,您可以阅读其php文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。