2012-06-12 38 views
1

好了,讓我們開始誤差第6行期望),但它具有足夠多的

<?php 
function LuhnCalc($number) { 
    $chars = array_reverse(str_split($number, 1)); 
    $odd = array_intersect_key($chars, array_fill_keys(range(1, count($chars), 2), null)); 
    $even = array_intersect_key($chars, array_fill_keys(range(0, count($chars), 2), null)); 
    $even = array_map(function($n) { return ($n >= 5)?2 * $n – 9:2 * $n; }, $even); 
    $total = array_sum($odd) + array_sum($even); 
    return ((floor($total/10) + 1) * 10 – $total) % 10; 
} 

print LuhnCalc($_GET['num']); 
?> 

的誤差示出在下列行的代碼

$even = array_map(function($n) { return ($n >= 5)?2 * $n – 9:2 * $n; }, $even); 


    return ((floor($total/10) + 1) * 10 – $total) % 10; 

的錯誤是

Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /home/MONKEY DO /public_html/gateway/crn.php on line 6

回答

2

錯誤消息顯示「我有一個功能,但我預計)」。它告訴你,根據解析器的語法,令牌function預計不會在此時發生。當您編寫array_map(function(...時,您使用編譯器不喜歡的令牌function傳遞匿名函數。

匿名函數在PHP 5.3中引入。您可能正在運行和PHP的舊版本。檢查您正在運行的版本,並在需要時升級。

+0

謝謝,現在升級。 – RussellHarrower

+0

沒有理由爲此更新..您可以將array_map轉換爲使用內嵌代碼 – 2012-06-13 00:11:49

+0

我正在運行PHP版本5.3.13 – RussellHarrower

相關問題