Search code examples
phpclosuresphp-5.2

Closure causes syntax error in php-5.2


I am executing following code from this post:

preg_match_all("/'(.+)' ((\w+)\(? ?(\d*) ?\)?)/", $sql, $_matches, PREG_SET_ORDER);
$matches = array_map(function($v) {return array(trim($v[2]), $v[1]);}, $_matches);

But I am getting following error:

Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in SqlParser.php on line 29

I have spent some time to solve this but I am unable to find the solution.

Can someone tell me that what is wrong ?


Solution

  • I'm assuming you are using a PHP version less than 5.3, which does not support closures (You confirmed this in your comments). The code below should work. I just converted the anonymous function to a normal function.

    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);