繁体   English   中英

默认参数数组不被馈送到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;
}

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

不幸的是,该函数不返回任何内容,它应该返回包含我的默认值的$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作为第一个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM