【问题标题】:Default parameters array not being fed into user-defined function in PHP?默认参数数组未输入 PHP 中的用户定义函数?
【发布时间】:2016-01-04 13:24:57
【问题描述】:

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

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 数组。

我是否犯了语法错误?为什么我的函数没有收到我的默认值?

【问题讨论】:

  • 我认为您的代码是正确的。当我尝试它从函数返回默认值时。你怎么调用函数?像这样调用函数 print_r (validate_promotional_code("code"));然后它将打印数组。

标签: php arrays function parameters user-defined-functions


【解决方案1】:

默认的$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 作为第一个参数的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多