Как в пользовательской функции создать произвольное количество аргументов?

Для создания произвольного количества аргументов следует использовать ключевое слово ParamArray.

Переменные, ссылающиеся на функции

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

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

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