PHP 函數可接受不固定數量參數。舊版用 func_get_args(),PHP 5.6+ 推薦使用 ...$args(可變參數語法)。
function addAnything(...$numbers) {
$total = 0;
foreach ($numbers as $n) {
if (is_int($n)) $total += $n;
}
return $total;
}
echo addAnything(1, 5, 7, 8, 11); // 32
function addAnythingOld() {
$total = 0;
$args = func_get_args();
foreach ($args as $n) {
if (is_int($n)) $total += $n;
}
return $total;
}
function greet($greeting, ...$names) {
foreach ($names as $name) {
echo "$greeting, $name!\n";
}
}
greet("Hello", "Tom", "Jerry", "Mary");
$nums = [1, 2, 3]; echo addAnything(...$nums); // 6
| 特性 | func_get_args() | ...$args |
|---|---|---|
| 型別提示 | 無 | 可加型別:int ...$nums |
| 參數名稱 | 無(陣列索引) | 有意義名稱 |
| 預設值 | 難處理 | 可在函數簽名給預設 |
| 效能 | 稍慢 | 較快 |
| 相容性 | PHP 4+ | PHP 5.6+ |
func_num_args():實際傳入參數個數func_get_arg($index):取得單一參數新專案請直接使用 ...$args,程式碼更清晰、可維護。