Переменное количество аргументов функции

30 июл. 2015 г.
(обновлено 3 нояб. 2017 г.)

До PHP 5.6:

function sum() {
    $sum = 0;
    foreach (func_get_args() as $n) {
        $sum += $n;
    }
    return $sum;
}

Начиная с 5.6 можно так:

function sum(...$numbers) {
    $sum = 0;
    foreach ($numbers as $n) {
        $sum += $n;
    }
    return $sum;
}

Вызов echo sum(1, 2, 3, 4) и там, и там выдаст нам 10

Если нужно передать один или больше аргументов наверняка, а остальные переменными, то обычные указываем перед переменными: function someFunction($a, $b, ...$numbers) и вызываем someFunction(5, 3, 8, 6). Внутри функции получим

  • $a == 5
  • $b == 3
  • $numbers == [8, 6]