Подтвердить что ты не робот

Передача нескольких аргументов функции 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;


}
4b9b3361

Ответ 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.
}