Как реализовать функцию, которая может принимать произвольные параметры в PHP?

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

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

Пример:

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

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

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

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

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

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