我从这个post中执行以下代码
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我花了一些时间来解决这个问题,但我无法找到解决方案。
有人能告诉我出了什么问题吗?
发布于 2011-06-25 13:25:52
我假设您使用的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);发布于 2011-06-25 13:24:53
除非你使用的是php 5.3,否则你不能使用这样的匿名函数。根据the php documentation for callbacks的说法,
从PHP5.3.0开始,也可以将闭包传递给回调参数。
您可以使用create_function()来创建匿名对象。函数,这将适用于PHP5.3之前的版本。或者使用GWW的答案,这也应该是可行的。
否则,如果您有兴趣了解更多有关anon的信息。函数在PHP 5.3+中,你可以读取their php docs。
https://stackoverflow.com/questions/6476027
复制相似问题