首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

JS 與 PHP 向函數傳遞可變參數的區別對比

     編輯:PHP 綜合知識

JavaScript:arguments 對象

<script>
function test() {
    for (var i = 0; i < arguments.length; i++) {
        alert(arguments[i]);
    }
}
test(1, 2, 3, 'abc'); // 依次彈窗 1,2,3,abc
</script>
  • arguments 為類陣列對象,擁有 length 與索引訪問。
  • ES6 可用 function test(...args) 獲取真正陣列。

PHP:func_num_args / func_get_arg / func_get_args

方法一:逐個獲取

<?php
function show_params() {
    $count = func_num_args();
    for ($i = 0; $i < $count; $i++) {
        $param = func_get_arg($i);
        echo $param . PHP_EOL;
    }
}
show_params(1, 2, 'apple', 3.14);

方法二:一次性獲取陣列(推薦)

<?php
function show_params() {
    $params = func_get_args(); // 返回所有參數陣列
    foreach ($params as $param) {
        echo $param . PHP_EOL;
    }
}
show_params(1, 2, 'apple', 3.14);

對比總結

特性JavaScriptPHP
參數容器arguments(類陣列)func_get_args() 返回陣列
獲取個數arguments.lengthfunc_num_args()
獲取單個arguments[i]func_get_arg($i)
ES6/現代寫法function(...args) {}function(...$args) {} (PHP 5.6+)
性能arguments 較重func_get_args() 較 func_num_args+func_get_arg 快

現代 PHP(5.6+)可變參數語法

<?php
function sum(...$numbers) {
    return array_sum($numbers);
}
echo sum(1, 2, 3, 4); // 10

// 結合固定參數
function greet($greeting, ...$names) {
    foreach ($names as $name) {
        echo "$greeting, $name!\n";
    }
}
greet('Hello', 'Alice', 'Bob', 'Charlie');
  • ...$args 必須是最後一個參數。
  • 內部直接是陣列,無需 func_* 函數,代碼更清晰、性能更好。
  • 調用時也可用 ... 解包陣列:sum(...[1,2,3])。

最佳實踐

  • PHP 5.6+ **優先使用 ...$args** 語法,棄用 func_* 系列。
  • JS 現代環境優先使用 ...args(支援箭頭函數、解構)。
  • 需嚴格型別檢查時,PHP 7+ 可結合 array_map 或循環驗證。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved