Я хочу использовать значения в массиве как независимые аргументы в вызове функции. Пример:
// 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}"; }
Количество значений в массиве неизвестно.
Возможные решения:
Я могу передать массив как единственный аргумент, но предпочел бы передавать как несколько независимых аргументов функции.
implode()
массив в строку, разделенную запятыми. (Сбой, потому что это всего лишь одна строка.)
Использование одного параметра:
$str = "'a','b'"; function goat($str); // $str needs to be parsed as two independent values/variables.
Использовать eval()
?
Переместить массив?
Предложения приветствуются. Благодарю.
Этот вопрос довольно старен, но, наконец, для него в 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).