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


}

3 ответов


у вас есть несколько вариантов здесь.

во-первых, использовать дополнительные параметры.

  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] **/
 }

Если вы можете получить доступ к PHP 5.6+, есть новый синтаксис для переменных аргументов: ключевое слово с многоточием.
Он просто преобразует все аргументы в массив.

function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}
echo sum(1, 2, 3, 4);

Doc:... в PHP 5.6+


вы можете не указывать параметры в объявлении функции, а затем использовать 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.
}