意想不到的T_FUNCTION,期待')'

时间:2014-01-12 13:44:50

标签: php php-5.3 legacy-code

我正在使用AppServ 2.6.0 / Apache 2.2.8 / PHP 6.0.0-dev,我收到以下函数的错误。

<? if(count($ex) > 0) {
    foreach($ex as $k => $v) { 
      echo "<tr><td style='font-size:12px;'>".strip_tags($k)."</td>
      <td style='font-size:10px;'>".$v['count']."</td>
      <td style='font-size:10px;'>".implode(", ", array_map(function ($k, $v)
          { return $k."/".$v; }, array_keys($v['players']), array_values($v['players'])))."
      </td></tr>";  
    } 
 } ?>

错误是(第14行是array_map()所在的位置):

Parse error: syntax error, unexpected T_FUNCTION, expecting ')' ** on line 14

可悲的是,我无法更改PHP版本(我知道错误可能与PHP版本有关)。如果我升级PHP,整个项目,不是由我开始的,将会崩溃。

有没有办法让这个代码在Apache 2.2.8 / PHP 6.0.0-dev上运行?

如果没有办法解决这个问题,并且我不得不改变我的php版本,那么有没有任何版本的PHP5.3匿名函数也可以保留已弃用的版本?

1 个答案:

答案 0 :(得分:2)

您可以将其定义为“常规”函数并将其名称传递给array_map,而不是使用匿名函数:

function foo($k, $v) {
    return $k."/".$v;
}

array_map('foo', $my_array);