В PHP есть такие функции, как unset()
которые поддерживают любое количество параметров, которые мы бросаем на них.
Я хочу создать аналогичную функцию, которая способна принимать любое количество параметров и обрабатывать их все.
Есть идеи как это сделать?
В PHP используйте функцию func_get_args
для получения всех переданных аргументов.
<?php function myfunc(){ $args = func_get_args(); foreach ($args as $arg) echo $arg."/n"; } myfunc('hello', 'world', '.'); ?>
Альтернативой является передача массива переменных в вашу функцию, поэтому вам не нужно работать с такими вещами, как $arg[2];
и вместо этого может использовать $args['myvar'];
или повторите, какой порядок передается. Он также бесконечно расширяется, что означает, что вы можете добавлять новые переменные позже, не изменяя то, что вы уже закодировали.
<?php function myfunc($args){ while(list($var, $value)=each($args)) echo $var.' '.$value."/n"; } myfunc(array('first'=>'hello', 'second'=>'world', '.')); ?>
Вы можете использовать эти функции из области действия функции:
Некоторые примеры:
foreach (func_get_args() as $arg) { // ... }
for ($i = 0, $total = func_num_args(); $i < $total; $i++) { $arg = func_get_arg($i); }
Если вы намереваетесь сделать больше исследований по этому вопросу в будущем, термин, который вы ищете, является вариационной функцией . Связанная статья Википедии даже включает пример для PHP.
У вас будет 3 функции в вашем распоряжении, чтобы работать с этим. Иметь объявление функции:
function foo() { /* Code here */ }
func_num_args () Возвращает количество аргументов, переданных массиву
func_get_arg ($ index) Возвращает значение аргумента по указанному индексу
func_get_args () Возвращает массив аргументов.
Вы можете использовать func_get_args () внутри вашей функции для анализа любого количества переданных параметров.
если у вас есть PHP 5.6+, то вы можете использовать
function sum(...$numbers)
functions.variable-Arg-лист
Здесь вы можете узнать больше о передаче параметров в виде массивов аргументов в функцию, используя 3 вышеупомянутые функции args. Я просто собираю вещи в PHP git , поэтому вы можете много узнать о функциях PHP и трюках классов. Примеры являются информативными, описательными и проверенными. Нет foo, двусмысленность бара.
Если вы используете PHP 5.6 или более позднюю версию, списки аргументов могут включать ...
токен, чтобы обозначить, что функция принимает переменное количество аргументов. Аргументы будут переданы в заданную переменную в виде массива; Просто используя ...
вы можете получить доступ к неограниченным переменным аргументам.
например:
<?php function sum(...$numbers) { $sum = 0; foreach ($numbers as $n) { $sum += $n; } return $sum ; } echo sum(1, 2, 3, 4, 5); ?>
Если вы используете PHP версию <= 5.5, вы можете получить неограниченный параметр, используя функции func_num_args () , func_get_arg () и func_get_args () .
php7 обеспечивает простой способ passing and catching unlimited parameters
функции с помощью эллипсов прямо перед именем параметра в определении функции. Ниже приведен пример, демонстрирующий то же самое:
<?php function print_names(...$names){ foreach($names AS $name) echo "The name is: <b>$name</b>.\n"; } print_names( "Superman", "Ironman", "Spiderman", "HULK", "Thor", "Captain America", "Batman" );
Кредиты: http://dwellupper.io/post/5/passing-unlimited-parameters-to-functions-in-php7