Передача нескольких аргументов функции php
Извиняется за вопрос новичков, но у меня есть функция, которая принимает два параметра: один из них - это массив, который является переменной function createList($array, $var) {}
. У меня есть еще одна функция, которая вызывает createList только с одним параметром, $var, doSomething($var);
не содержит локальную копию массива. Как я могу просто передать один параметр функции, которая ожидает два в PHP?
попытка решения:
function createList (array $args = array()) {
//how do i define the array without iterating through it?
$args += $array;
$args += $var;
}
Ответы
Ответ 1
У вас есть пара вариантов.
Сначала нужно использовать необязательные параметры.
function myFunction($needThis, $needThisToo, $optional=null) {
/** do something cool **/
}
Другой способ состоит в том, чтобы избежать наименования каких-либо параметров (этот метод не является предпочтительным, потому что редакторы не могут намекать ни на что, и в сигнатуре метода нет документации).
function myFunction() {
$args = func_get_args();
/** now you can access these as $args[0], $args[1] **/
}
Ответ 2
Если вы можете получить доступ к PHP 5.6+, там будет новый синтаксис для переменных аргументов: ключевое слово ellipsis.
Он просто преобразует все аргументы в массив.
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
Doc: ... в PHP 5.6+
Ответ 3
Вы не можете указать никаких параметров в объявлении своей функции, затем используйте PHP func_get_arg или func_get_args, чтобы получить аргументы.
function createList() {
$arg1 = func_get_arg(0);
//Do some type checking to see which argument it is.
//check if there is another argument with func_num_args.
//Do something with the second arg.
}