Ответ 1
func_get_args
возвращает массив со всеми аргументами текущей функции.
Эй, я работал с PHP-функцией, которая принимает несколько аргументов и форматирует их. В настоящее время я работаю с чем-то вроде этого:
function foo($a1 = null, $a2 = null, $a3 = null, $a4 = null){
if ($a1 !== null) doSomethingWith($a1, 1);
if ($a2 !== null) doSomethingWith($a2, 2);
if ($a3 !== null) doSomethingWith($a3, 3);
if ($a4 !== null) doSomethingWith($a4, 4);
}
Но мне было интересно, могу ли я использовать такое решение:
function foo(params $args){
for ($i = 0; $i < count($args); $i++)
doSomethingWith($args[$i], $i + 1);
}
Но все равно вызовите функцию таким же образом, как и ключевое слово params в С# или массив аргументов в JavaScript.
func_get_args
возвращает массив со всеми аргументами текущей функции.
Если вы используете PHP 5.6+, вы можете сделать это:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
?>
источник: http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list
Или с PHP 7.1 теперь вы можете использовать подсказку типа iterable
function f(iterable $args) {
foreach ($args as $arg) {
// awesome stuff
}
}
Кроме того, он может использоваться вместо Traversable
при повторном использовании интерфейса. Как и его можно использовать как генератор, который дает параметры.