默认参数数组未被输入 PHP 中的用户定义函数?

Default parameters array not being fed into user-defined function in PHP?

这是我拥有的一个非常大的用户定义函数的简化版本...

function validate_promotional_code($code, $params = ["reference" => "code", "input-type" => "single", "delimiter" => ","]) {
  global $node_connection;
  $operator_array = [
    "Free With Purchase",
    "Buy One Get One Free"
  ];
  return $params;
}

我已经多次使用这种将具有默认值的关联数组传递给用户定义函数的方法。它让我可以为我的函数设置默认值,而不必担心哪个变量在哪里等等。

不幸的是,这个函数 return 什么都没有,它应该 return 包含我的默认值的 $params 数组。

我有语法错误吗?为什么我的函数没有收到我的默认值?

默认的 $params 数组 将被您的函数使用 – 但前提是函数调用根本不包含 $params 参数。

如果为 $params 传递了 任何 值,将使用该值 而不是 您的默认值。 PHP 不关心它是一个数组并且不合并它。你必须自己做:

function validate_promotional_code($code, $params = []) {
    $defaults = ["reference" => "code", "input-type" => "single", "delimiter" => ","];
    $params = array_merge($defaults, $params);

    // ... work with $params ...
}

array_merge() 函数将合并两个数组,而后一个数组中的值将覆盖第一个数组中的值。这就是我们将 $defaults 作为第一个参数的原因。