Можете ли вы сделать что-то сумасшедшее, как это
function cool_function($pizza, $ice_cream) { make the arguments in the array into an array return $array_of_paramaters // my new array } // end function print_r(cool_function); // outputs array(0 => pizza, 1=> ice cream)
На самом деле это довольно просто (и прочитайте руководство: func_get_args
– возвращает массив, содержащий список аргументов функции, также смотрите: списки аргументов переменной длины ):
function cool_function($pizza, $ice_cream) { return func_get_args(); }
но как спросили в комментариях, зачем вам это нужно?
Или вам нужны имена переменных? Reflection Docs – ваш друг:
function cool_named($neutron, $electron) { $f = new ReflectionFunction(__FUNCTION__); $p = array(); foreach($f->getParameters() as $p1) $p[] = '$'.$p1->name; return $p; } var_dump(cool_named());
Или просто оба? ( Изменить: учитывайте параметры длины, длины, длины и длины):
function overall($neutron, $electron, $quark = 'xiaro') { $f = new ReflectionFunction(__FUNCTION__); $defined = $f->getParameters(); $passed = func_get_args() + array_fill(0, count($defined), NULL); foreach($defined as &$param) $param = '$'.$param->name; return array_combine($defined + array_keys($passed), $passed); } var_dump(overall('clara', 'peter', 'moon', 'jupiter'));
Я не уверен, что вы ищете func_get_args
которые возвращают все аргументы, переданные функции, или класс ReflectionFunction
.
Основной пример func_get_args:
function cool_function($pizza, $ice_cream) { return func_get_args(); }
Но вам не нужны аргументы, чтобы сделать эту работу:
function cool_function() { return func_get_args(); } // cool_function(1,2,3) will return array(1,2,3)
Опция отражения:
/** * Returns an array of the names of this function */ function getMyArgNames($a,$b,$c) { $args = array(); $refFunc = new ReflectionFunction(__FUNCTION__); foreach( $refFunc->getParameters() as $param ){ $args[] = $param->name; } return $args; }
Или, для действительно сумасшедшего:
/** * Returns an associative array of the names of this function mapped * to their values */ function getMyArgNames($a,$b,$c) { $received = func_get_args(); $i = 0; $args = array(); $refFunc = new ReflectionFunction(__FUNCTION__); foreach( $refFunc->getParameters() as $param ){ $args[$param->name] = $received[$i++]; } // include all of those random, optional arguments. while($i < count($received)) $args[] = $received[$i++]; return $args; }
ты имеешь ввиду
function valuesToArray($value1,$value2){return array($value1,$value2);}
Если бы я добрался до вас, вам это понравилось:
function cool_function($pizza, $ice_cream) { return array($pizza, $ice_cream); }
но вы могли бы просто сделать это:
$new_var = array($pizza, $ice_cream);