func_get_args

(PHP 4, PHP 5, PHP 7)

func_get_argsВозвращает массив, содержащий аргументы функции

Описание

func_get_args ( void ) : array

Получает массив, содержащий аргументы функции.

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

Возвращаемые значения

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

Список изменений

Версия Описание
5.3.0 Эта функция теперь может быть использована в качестве параметра функции.
5.3.0 Если эта функция вызвана в глобальной области видимости файла, подключенного с помощью include или require из функции вызывающего файла, то теперь будет сгенерировано предупреждение и возвращено значение FALSE.

Ошибки

Генерирует предупреждение при вызове вне определения функции.

Примеры

Пример #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(123);
?>

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

Количество аргументов: 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 также будут возвращены текущие значения, если аргументы переданы по значению

Замечание: Эта функция возвращает только копии переданных аргументов, и не возвращает значения по умолчанию (непереданных) аргументов.