Как реализовать функцию, которая может принимать произвольные параметры в PHP? - PullRequest
3 голосов
/ 28 января 2010

Есть ли в PHP такая функция?

Ответы [ 4 ]

5 голосов
/ 28 января 2010

Вы можете использовать эти функции:

Пример:

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);
?>
0 голосов
/ 28 января 2010

Возможно, лучший способ - передать один аргумент, который на самом деле является массивом аргументов. например:

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);

Это также позволит лучше обнаруживать ошибки. Если у вас много много аргументов, вполне возможно получить их в неправильном порядке. Кроме того, если вы расширяете или модифицируете функцию, она с большей вероятностью продолжит работу с существующим кодом.

0 голосов
/ 28 января 2010

Конечно, создайте функцию без параметров, вызовите ее с чем угодно, и внутри функции используйте func_get_args () , чтобы получить фактические аргументы.

0 голосов
/ 28 января 2010

Используйте функцию func_get_args(). Это даст вам массив всех параметров, переданных этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...