2013-12-16 28 views
0

我有以下代碼。PHP匿名函數拋出PHP 5.2錯誤

$resu = array_map(function($aVal, $bVal){ 
return "$bVal [$aVal]"; 
}, $result, $intersect); 

$sorAr = array(); 
array_walk($resu, function($element) use (&$sorAr) { 
$parts = explode(" ", $element); 
$sorAr[$parts[0]] = trim($parts[1], ' []'); 
}); 

問題出在我需要在變量$ resu和array_walk中都使用匿名函數。錯誤顯示如下

Parse error: syntax error, unexpected T_FUNCTION in /dir...

我嘗試閱讀本網站的不同建議,但沒有運氣。我該如何解決這個問題。有人幫忙嗎?

我已經試過這個代碼...

function arrSwap() { 
         $arraySwap = function($aVal, $bVal){ 
          return "$bVal [$aVal]"; 
          };       
         $resu = array_map($arraySwap, $result, $intersect); 
         } 

         $sorAr = array(); 
         function arrSwap2() { 
         $arrayWalk = function($element) use (&$sorAr) { 
          $parts = explode(" ", $element); 
          $sorAr[$parts[0]] = trim($parts[1], ' []'); 
         }; 
         array_walk($resu, $arrayWalk); 
         } 

,但我得到這個錯誤...

致命錯誤:不能重新聲明arrSwap()(先前聲明中的第100行... 該線100是這樣的 - >功能arrSwap(){

+0

檢查你的PHP版本,看看匿名函數都支持該版本或不? – Abhishek

+0

不幸的是它不被支持,5.2.6。我如何重新編寫上面的代碼來處理這個版本? –

+0

是的,有兩個選項是更新上面的php版本或更改函數,但如果這個概率。發生在託管時,然後只是提高服務器支持團隊的門票,以更新服務器的PHP版本。 – Abhishek

回答

4

匿名功能在不可用5.2

查看變更日誌here

5.3.0 Anonymous functions become available.

0
function arr1($aVal, $bVal){ return "$bVal [$aVal]"; } 
function arrayWalk($element){ $parts = explode(" ", $element); $sorAr[$parts[0]] = trim($parts[1], ' []'); } 
function arrSwap(){ $resu = array_map('arr1', $result, $intersect); $sorAr = array(); array_walk($resu, 'arrayWalk'); } 

如果仍然有概率讓我知道傳遞所有這些值有

+0

仍然我得到同樣的問題,我打電話在foreach循環內的函數,這是否有一些事情與錯誤? –

+0

在foreach循環中調用哪一個函數,雖然在foreach循環中調用一個函數並不會改變它的行爲,但通過檢查函數內部傳遞的數組數據和其他變量來調試代碼,這些變量只能用於獲取解決方案只需在每一步追蹤它們。 – Abhishek