PHP: Define function with variable parameter count?

Yes. Use func_num_args() and func_get_arg() to get the arguments:

<?php
  function dynamic_args() {
      echo "Number of arguments: " . func_num_args() . "<br />";
      for($i = 0 ; $i < func_num_args(); $i++) {
          echo "Argument $i = " . func_get_arg($i) . "<br />";
      }
  }

  dynamic_args("a", "b", "c", "d", "e");
?>

In PHP 5.6+ you can now use variadic functions:

<?php
  function dynamic_args(...$args) {
      echo "Number of arguments: " . count($args) . "<br />";
      foreach ($args as $arg) {
          echo $arg . "<br />";
      }
  }

  dynamic_args("a", "b", "c", "d", "e");
?>

Although this question is very old: Actually in PHP 5.6+ you can exactly write what you wrote :D


or just

function printArgs() {

 foreach (func_get_args () as $arg){
  echo $arg;
 }
}

printArgs("1 ", "2 ", "three ");

outputs 1 2 three


You can accept a variable number of arguments to any function, so long as there are enough to populate all the declared arguments.

<?php

function test ($a, $b) { }

test(3); // error
test(4, 5); // ok
test(6,7,8,9) // ok

?>

To access the extra un-named arguments passed to test(), you use the functions func_get_args(), func_num_args(), and func_get_arg($i) :

<?php

// Requires at least one param, $arg1
function test($arg1) {

  // func_get_args() returns all arguments passed, in order.
  $args = func_get_args();

  // func_num_args() returns the number of arguments
  assert(count($args) == func_num_args());

  // func_get_arg($n) returns the n'th argument, and the arguments returned by
  // these functions always include those named explicitly, $arg1 in this case
  assert(func_get_arg(0) == $arg1);

  echo func_num_args(), "\n";
  echo implode(" & ", $args), "\n";

}

test(1,2,3); // echo "1 & 2 & 3"

?>