Функции с переменным количеством аргументов

Все функции, которые были разработаны ранее, имели фиксированное коли­чество аргументов. Но в РНР предусмотрена возможность работы с функциями, которые имеют переменное количество аргументов. Это не то же самое, что ис­пользование значений аргументов по умолчанию, речь идет о том, что функция может быть вызвана с разным количеством аргументов, каждый из которых мо­жет быть проанализирован при помощи специализированных функций. При этом функция может быть вызвана с таким количеством аргументов, с каким потребуется. Например, требуется разработать функцию, которая отображает конкатенацию всех переданных ей строк. Вызываться эта функция под назва­нием joiner будет, например, следующим образом:

code: #php
joiner("Без", "паники");
joiner("Сегодня", "хорошая", "погода.");
joiner("Просто", "очень", "длинная", "строка.");

Для обработки переменного списка аргументов в, РНР предусмотрены сле­дующие три функции:

func_num_args. Возвращает количество аргументов функции.
func_get_arg. Возвращает заданный аргумент функции.
func_get_args. Возвращает все аргументы функции в виде массива.

В примере для реализации функции joiner используются две из этих функций. При помощи функции func_num_args определяется количество ар­гументов, переданных при данном вызове функции, а при помощи функции func_get_args из аргументов формируется массив, элементы которого после­довательно обрабатываются в цикле.

code: #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 ("Без", "паники."), "
"
; echo "joiner(\"He\", \"стоит\", \"волноваться.\") = ", joiner("He", "стоит", "волноваться."), "
"
; echo "joiner(\"Это\", \"совсем\", \"длинная\", \"строка.\") = ", joiner("Это", "совсем", "длинная", "строка."), "
"
; ?>

На рисунке представлен результат выполнения этого примера. Видно, что все переданные функции joiner аргументы корректно обработаны.

результат выполнения примера

Для получения конкретного аргумента функции может быть также исполь­зована функция func_get_arg. Ей надо передать номер аргумента (нумерация начинается с 0), и она вернет его значения в качестве результата.

Книга: PHP в примерах. Купить книгу
Автор: Стивен Хольцнер. Переводчик: С. Банников
Поделиться:

Похожие статьи: