У меня есть function
php по нескольким параметрам. Я хочу вызвать эту function
установив только последний аргумент. Простым способом является установка другого аргумента пустым . Но это не хорошо.
Можно ли вызвать эту function
с установкой последнего аргумента и без установки другого аргумента?
См. Этот пример:
function MyFunction($A, $B, $C, $D, $E, $F) { //// Do something } //// Simple way MyFunction("", "", "", "", "", "Value"); //// My example MyFunction(argument6: "Value")
Мое предложение – это использование массива вместо использования числа аргументов. Например, ваш вызов функции должен быть таким.
$params[6] = 'value'; MyFunction($params);
Для определения того, что шестой параметр установлен
function MyFunction($params){ If ( isset($params[6]) ) // parameter six has value }
Я надеюсь, что это будет альтернативный путь
В контексте вопроса это работает. Вы можете использовать каждый ключ массива как переменную типа $ A, $ B, … Но вы должны быть осторожны, чтобы не публиковать $ args со старыми значениями, которые вы ранее задали.
<?php $args = array('A'=>'', 'B'=>'', 'C'=>'', 'D'=>'', 'E'=>'', 'F'=>''); function MyFunction($args) { foreach($args as $key => $value) $$key = $value; echo $F; //// Do something } $args['F'] = 'Value'; Myfunction($args);
Используйте параметр массива как параметр, а тип использования – намек и пустой массив как значение по умолчанию в определении функции. Предоставьте значения по умолчанию внутри функции и переопределите их по пользовательским значениям.
function MyFunction(array $args = []) { // Provide default values $defaults = [ 'A' => 0, 'B' => 0, 'C' => 0, 'D' => 0, 'E' => 0, 'F' => 0 ]; foreach ($defaults as $key => $val) { if (!array_key_exists($key, $args)) { $args[$key] = $val; } } echo '<pre>'; print_r($args); echo '</pre>'; } MyFunction(); MyFunction(['F' => 77]);