Есть ли у 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);
Это также позволит улучшить обнаружение ошибок. если у вас много аргументов, вполне возможно получить их в неправильном порядке. плюс, если вы расширяете или изменяете функцию, более вероятно, что она будет продолжать работать с существующим кодом.