PHP 支援不定數量參數函數,早期使用 func_get_args(),PHP 5.6+ 引入 ... 運算子( variadic operator)提供更清晰語法與型別提示。本文完整比較兩種寫法。
<?php
function addAnything() {
$total = 0;
$args = func_get_args(); // 取得所有參數陣列
foreach ($args as $arg) {
if (is_int($arg)) {
$total += $arg;
}
}
return $total;
}
echo addAnything(1, 5, 7, 8, 11) . "\n"; // 32
?>
<?php
function addAnythingModern(int ...$numbers): int {
return array_sum($numbers);
}
echo addAnythingModern(1, 5, 7, 8, 11) . "\n"; // 32
// echo addAnythingModern(1, 'a', 3); // TypeError: Argument must be int
?>
| 特性 | func_get_args() | ... 運算子 |
|---|---|---|
| 型別檢查 | 無(執行時手動檢查) | 支援型別宣告(編譯/執行時強制) |
| 參數命名 | 無(只能用 $args[0]) | 有語意名稱($numbers) |
| IDE 支援 | 弱 | 完整(參數提示、重構) |
| 效能 | 稍慢(建立陣列) | 優化較好 |
| 相容性 | PHP 4+ | PHP 5.6+ |