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?
function createList (array $args = array()) {
//how do i define the array without iterating through it?
$args += $array;
$args += $var;
}
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] **/
}
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 +
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.
}