Поверните массив в независимые аргументы функции – howto?

Я хочу использовать значения в массиве как независимые аргументы в вызове функции. Пример:

// Values "a" and "b" $arr = array("alpha", "beta"); // ... are to be inserted as $a and $b. my_func($a, $b) function my_func($a,$b=NULL) { echo "{$a} - {$b}"; } 

Количество значений в массиве неизвестно.

Возможные решения:

  1. Я могу передать массив как единственный аргумент, но предпочел бы передавать как несколько независимых аргументов функции.

  2. implode() массив в строку, разделенную запятыми. (Сбой, потому что это всего лишь одна строка.)

  3. Использование одного параметра:

     $str = "'a','b'"; function goat($str); // $str needs to be parsed as two independent values/variables. 
  4. Использовать eval() ?

  5. Переместить массив?

Предложения приветствуются. Благодарю.

Этот вопрос довольно старен, но, наконец, для него в PHP 5.6+ появилась более прямая поддержка:

http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list.new

 $arr = array("alpha", "beta"); my_func(...$arr); 

если я правильно вас понимаю:

 $arr = array("alpha", "beta"); call_user_func_array('my_func', $arr); 

список попыток ()

 // Values "a" and "b" $arr = array("alpha", "beta"); list($a, $b) = $arr; my_func($a, $b); function my_func($a,$b=NULL) { echo "{$a} - {$b}"; } 

Вы можете сделать это, используя call_user_func_array () . Это работает чудеса (и даже с лямбда-функциями с PHP 5.3).