如何在PHP中实现可以接受任意参数的函数?

时间:2010-01-28 02:44:57

标签: php function parameters

PHP有这样的功能吗?

4 个答案:

答案 0 :(得分:5)

您可以使用以下功能:

实施例:     

function my_sum() { // <--- No parameters! :D
    $total = func_num_args();
    $numbers = func_get_args();

    if ($total < 1) {
        trigger_error('Less than one number :(');
        return 0;
    } else {
        // Calculate the sum
        $sum = array_sum($numbers);
        return ($sum / $total);
    }
}

// Usage:
echo my_sum(1, 2, 5, 109, 10231);
?>

答案 1 :(得分:0)

使用功能func_get_args()。它将为您提供传递给该函数的所有参数的数组。

答案 2 :(得分:0)

当然,创建一个没有参数的函数,用你想要的任何东西调用它,并在函数内使用func_get_args()来获得实际的参数。

答案 3 :(得分:0)

或许更好的方法是传递一个参数,这实际上是一个参数数组。 例如:

function my_sum($data){
    $sum = 0;
    foreach($sum as $value){
        $sum+=$value;
    }
    return $sum;
}

echo my_sum(array(1, 2, 5, 109, 10231));

我经常使用关联数组将参数传递给函数。如果提交的参数是可选的,或者本质上是变化的,那么这非常有用。 例如:

$data = array(
    'date' => '10/4/06',
    'name' => 'biggles',
    'occupation' => 'pilot'
);
add_person($data);

这也可以更好地检测错误。如果你有很多参数,很可能会以错误的顺序排列它们。另外,如果扩展或修改teh函数,则更有可能继续使用现有代码。