2014-01-12 36 views
0

我正在使用AppServ 2.6.0/Apache 2.2.8/PHP 6.0.0-dev,並且出現以下函數的錯誤。意外的T_FUNCTION,期待')'

<? 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匿名函數,也保持不贊成的?

+0

讓它作爲一個普通預聲明命名的功能? 「 – mario

+2

」......這也保留了棄用的?「 - 這是什麼意思?我還發現使用PHP 6.0.0-dev是一個糟糕的主意,這是一個不再存在的東西的alpha版本。你絕對應該轉向「真正」的PHP版本。 – deceze

+0

您可以使用自PHP 4.0.1起可用的[create_function](http://php.net/create_function)。 – 2014-01-12 13:55:52

回答

2

而不是使用匿名功能,您可以將其定義爲「常規」的功能,並通過它的名字array_map的:

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

array_map('foo', $my_array); 
+1

嗯,這絕對讓我感到很蠢,我花了最後一小時試圖做這件事,從來沒有發生過我這樣做。非常感謝。 – danks

+0

@danks當您的問題得到解答時,請不要發表評論感謝回答者,請將答案標記爲已接受。一旦你有15個代表,你也可以贊成接受的答案和其他你認爲有幫助的答案。請參閱http://stackoverflow.com/help/someone-answers –

相關問題