1

好的,让我们从代码开始

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

错误是

解析错误:语法错误,意外的 T_FUNCTION,在第 6 行的 /home/MONKEY DO /public_html/gateway/crn.php 中需要 ')'

4

1 回答 1

2

错误消息说“我有一个函数,但我期望一个)”。它告诉您,根据解析器的语法,令牌function预计不会在此时发生。当您编写时,您正在使用编译器不喜欢array_map(function(...的 token 传递一个匿名函数。function

PHP 5.3 中引入了匿名函数。您可能正在运行旧版本的 PHP。检查您正在运行的版本,并在需要时进行升级。

于 2012-06-12T23:35:29.463 回答