PHP 4 新支援了可變長度的參數用法 (Variable-length argument lists),我們直接以一個範例來說明:
<?php
function foo() { $numargs = func_num_args(); return $numargs; }
$n = foo (10, 15, 20); //傳入 3 個參數 echo $n; //輸出 3
?>
程式裡的 func_num_args() 函數傳回呼叫該函數時所傳入的參數個數,以範例中的 foo(10, 15, 20) 為例,傳入了 3 個參數給 foo() 函數,因此 $numargs 的值為 3。此時 function foo() 不需要加上參數列表 (parameter lists)。
要取得傳入的參數,則是使用 func_get_arg() 函數。請看底下的範例:
<?php function foo() { $numargs = func_num_args(); if ($numargs > 2) { echo "First: ". func_get_arg(0). "
\n"; echo "Second: ". func_get_arg(1). "
\n"; echo "Third: ". func_get_arg(2). "
\n"; } return $numargs; }
$n = foo (10, 15, 20); //傳入 3 個參數 echo $n; ?>
執行後的輸出結果為:
First: 10 Second: 15 Third: 20 3
要注意的是,參數的個數是由 0 算起,因此 func_get_arg(0) 會傳回第 1 個參數。如果指定給 func_get_arg() 的參數個數超過實際傳入的參數範圍,則 func_get_arg() 會傳回 FALSE。
另外,還有一個 func_get_args() 函數會傳回參數的陣列,因此我們可以配合 foreach 敘述來取得參數的值。請看底下的範例:
<?php function foo() { foreach(func_get_args() as $value) { echo "$value
\n"; } } foo (10, 15, 20); //傳入 3 個參數 ?>
輸出結果如下:
10 15 20
--jollen
評論 (1)
<B><PRE>
<?php
function foo() {
$numargs = func_num_args();
$sum = 0;
for ($i = 0; $i
</PRE></b>
由 jollen | April 27, 2007 1:25 PM
發表於 April 27, 2007 13:25