web-dev-qa-db-fra.com

passer plusieurs arguments pour fonctionner php

Toutes mes excuses pour la question du débutant, mais j'ai une fonction qui prend deux paramètres, l'un est un tableau, l'autre est une variable function createList($array, $var) {}. J'ai une autre fonction qui appelle createList avec un seul paramètre, $ var, doSomething($var); elle ne contient pas de copie locale du tableau. Comment puis-je simplement passer un paramètre à une fonction qui en attend deux en PHP?

tentative de solution:

function createList (array $args = array()) {
    //how do i define the array without iterating through it?
 $args += $array; 
 $args += $var;


}
16
Undermine2k

Vous avez quelques options ici.

La première consiste à utiliser des paramètres facultatifs.

  function myFunction($needThis, $needThisToo, $optional=null) {
    /** do something cool **/
  }

L'autre façon consiste simplement à éviter de nommer des paramètres (cette méthode n'est pas préférée car les éditeurs ne peuvent rien suggérer et il n'y a pas de documentation dans la signature de la méthode).

 function myFunction() {
      $args = func_get_args();

      /** now you can access these as $args[0], $args[1] **/
 }
9
Orangepill

Si vous pouvez mettre la main sur PHP 5.6+, il existe une nouvelle syntaxe pour les arguments variables: le mot clé Ellipsis.
Il convertit simplement tous les arguments en un tableau.

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

Doc: ... dans PHP 5.6 +

37
Petruza

Vous ne pouvez spécifier aucun paramètre dans votre déclaration de fonction, puis utilisez PHP func_get_arg ou func_get_args pour obtenir les arguments.

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.
}
4
crush