第 6 行上的错误预期),但它有足够的它们


error on line 6 expecting ) but it has enough of them

好的,让我们从代码开始

<?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、预期在 /home/MONKEY DO/public_html/gateway/crn.php 在第 6 行

错误消息显示"我得到了一个函数,但我期望一个)"。它告诉你,根据解析器的语法,令牌function预计不会在那个时候发生。当你写array_map(function(...时,你正在使用令牌function传递一个匿名函数,这是编译器不喜欢的。

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