这是一个非常大的用户定义函数的简化版本.
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数组。
我犯了语法错误吗?为什么我的函数没有接收到我的默认值?
发布于 2015-10-07 10:48:02
函数将使用默认的$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 ...
}合并()函数将合并两个数组,而后一个数组中的值将覆盖第一个数组中的值。这就是为什么我们把$defaults作为第一个论点的原因。
https://stackoverflow.com/questions/32990096
复制相似问题