func_get_args
(PHP 4, PHP 5, PHP 7)
func_get_args — Возвращает массив, содержащий аргументы функции
Описание
Получает массив, содержащий аргументы функции.
Эта функция может быть использована совместно с func_num_args() и func_get_arg() для создания функций с переменным количеством аргументов.
Возвращаемые значения
Возвращает массив, в котором каждый элемент является копией соответствующего члена списка аргументов пользовательской функции.
Ошибки
Генерирует предупреждение при вызове вне определения функции.
Примеры
Пример #1 Пример использования func_get_args()
<?php
function foo()
{
$numargs = func_num_args();
echo "Количество аргументов: $numargs\n";
if ($numargs >= 2) {
echo "Второй аргумент: " . func_get_arg(1) . "\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Аргумент №$i: " . $arg_list[$i] . "\n";
}
}
foo(1, 2, 3);
?>
Результат выполнения данного примера:
Количество аргументов: 3 Второй аргумент: 2 Аргумент №0: 1 Аргумент №1: 2 Аргумент №2: 3
Пример #2 Использование func_get_args() до и после PHP 5.3
test.php
<?php
function foo() {
include './fga.inc';
}
foo('Первый аргумент', 'Второй аргумент');
?>
fga.inc
<?php
$args = func_get_args();
var_export($args);
?>
Вывод до PHP 5.3:
array ( 0 => 'Первый аргумент', 1 => 'Второй аргумент', )
Вывод в PHP 5.3 и выше:
Warning: func_get_args(): Called from the global scope - no function context in /home/torben/Desktop/code/ml/fga.inc on line 3 false
Пример #3 Пример передачи аргументов по ссылке и по значению с func_get_args()
<?php
function byVal($arg) {
echo 'Передан : ', var_export(func_get_args()), PHP_EOL;
$arg = 'baz';
echo 'После изменения : ', var_export(func_get_args()), PHP_EOL;
}
function byRef(&$arg) {
echo 'Передан : ', var_export(func_get_args()), PHP_EOL;
$arg = 'baz';
echo 'После изменения : ', var_export(func_get_args()), PHP_EOL;
}
$arg = 'bar';
byVal($arg);
byRef($arg);
?>
Результат выполнения данного примера в PHP 7:
Передан : array (
0 => 'bar',
)
После изменения : array (
0 => 'baz',
)
Передан : array (
0 => 'bar',
)
После изменения : array (
0 => 'baz',
)
Результат выполнения данного примера в PHP 5:
Передан : array (
0 => 'bar',
)
После изменения : array (
0 => 'bar',
)
Передан : array (
0 => 'bar',
)
После изменения : array (
0 => 'baz',
)
Примечания
Замечание:
Так как для определения параметров данной функции необходим контекст выполнения, она не может быть передана в качестве параметра в версиях PHP до 5.3.0. Если функцию все же необходимо передать, то нужно присвоить ее переменной, которую уже можно использовать при передаче.
Замечание:
Если аргументы были переданы по ссылке, то все изменения аргументов будут отражены на возвращаемых функцией значениях. В PHP 7 также будут возвращены текущие значения, если аргументы переданы по значению
Замечание: Эта функция возвращает только копии переданных аргументов, и не возвращает значения по умолчанию (непереданных) аргументов.