Массив параметров по умолчанию не подается в пользовательскую функцию в 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

Решение

По умолчанию $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 в качестве первого аргумента.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]