2015-10-07 25 views
0

这是一个非常大的用户定义的函数我的简化版本...默认参数数组没有被馈入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数组。

我犯了语法错误吗?为什么我的功能没有收到我的默认值?

+0

我认为你的代码是正确的。当我尝试它时,从函数返回默认值。你如何调用函数?像这样调用函数print_r(validate_promotional_code(“code”));那么它将打印数组。 – sixFingersMan

回答

2

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

相关问题