Hay ciertas funciones de PHP en las que puedes en el que el número de parámetros a esa función es variable, que peudes pasar uno, dos, hasta n parámetros como la función unset:
//En este ejemplo se le pasa un parámetro
unset($var1);
//En este ejemplo se le pasan dos parámetros
unset($var1,$var2);
Hasta que un día, en el trabajo, tenía tiempo y me dediqué a investigar como se hacía, que podría ser útil en un futuro. Y conseguí averiguarlo, la verdad es que es bastante útil.
Hay tres funciones interesantes:
func_get_arg: Devuelve un elemento de una lista de argumentos.
function foo()
{
//Mostrará 2
echo "El segundo argumento es: " . func_get_arg(1) . "
\n";
}
foo (1, 2, 3);
func_num_args: Devuelve el número de argumentos pasados a la función.
function foo()
{
//Mostrará 6
echo "El número de argumentos pasados es: " . func_num_args() . "
\n";
}
foo (1, 2, 3, 4, 5, 6);
func_get_args: Devuelve un array que se compone de una lista de argumentos de función.
function foo()
{
//Mostrará del 1 al 20 uno por uno
$numargs = func_num_args();
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++)
{
echo "El argumento $i es: " . $arg_list[$i] . "
\n";
}
}
foo (1, 2, 3, 4, 5, 6,7,....,20);
En PHP 7.4 se puede usar el operador spread
function spreadParameters(...$parameters) {
printf($parameters);
}
spreadParameters(1);
spreadParameters(1, 2);
spreadParameters(1, 2, 3);
spreadParameters(1, 2, 3, 4);
spreadParameters(1, 2, 3, 4, 5);