#4. 6 php Функции с переменным количеством аргументов
Primary tabs
Все функции, которые были разработаны ранее, имели фиксированное количество аргументов. Но в РНР предусмотрена возможность работы с функциями, которые имеют переменное количество аргументов. Это не то же самое, что использование значений аргументов по умолчанию, речь идет о том, что функция может быть вызвана с разным количеством аргументов, каждый из которых может быть проанализирован при помощи специализированных функций. При этом функция может быть вызвана с таким количеством аргументов, с каким потребуется. Например, требуется разработать функцию, которая отображает конкатенацию всех переданных ей строк. Вызываться эта функция под названием joiner будет, например, следующим образом:
joiner("Без", "паники") ;
joiner("Сегодня", "хорошая", "погода.");
joiner("Просто", "очень", "длинная", "строка.");Для обработки переменного списка аргументов в РНР предусмотрены следующие три функции:
- func_num_args Возвращает количество аргументов функции.
- func_get_arg Возвращает заданный аргумент функции.
- func_get_args Возвращает все аргументы функции в виде массива.
В следующем примере для реализации функции joiner используются две из этих функций. При помощи функции func_num_args определяется количество аргументов, переданных при данном вызове функции, а при помощи функции func_get_args из аргументов формируется массив, элементы которого последовательно обрабатываются в цикле.
Пример. Переменное число аргументов функции
<HTML>
<HEAD>
<TITLE>
Функции с переменным числом аргументов
</TITLE>
</HEAD>
<BODY>
<H1>
Функции с переменным числом аргументов
</H1>
<?php
function joiner()
{
$text = " ";
$arg_list = func_get_args();
for ($loop_index = 0; $loop_index < func_num_args();
$loop_index++) {
$text .= $arg_list[$loop_index] . " ";
}
return $text;
}
echo "joiner(\"Без\", \"паники.\") = ", joiner("Без",
"паники. " ) , "<BR>" ;
echo "joiner(\"He\", \"стоит\", \"волноваться.\") = ",
joiner("He", "стоит", "волноваться."), "<BR>";
echo "joiner(\"Это\", \"совсем\", \"длинная\",
\"строка. \") = ", joiner("Это", "совсем", "длинная", "строка."),"<BR>";
?>
</BODY>
</HTML>
На рис.1 представлен результат выполнения этого примера. Видно, что все переданные функции joiner аргументы корректно обработаны.

- Log in to post comments
- 629 reads