func_get_arg

(PHP 4, PHP 5, PHP 7)

func_get_argВернуть элемент из списка аргументов

Описание

func_get_arg ( int $arg_num ) : mixed

Возвращает указанный аргумент из списка аргументов пользовательской функции.

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

Список параметров

arg_num

Номер аргумента. Аргументы функции считаются с нуля.

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

Возвращает указанный аргумент или false в случае ошибки.

Ошибки

Генерирует предупреждение при вызове вне определения функции, или если arg_num больше реально переданного количества аргументов.

Примеры

Пример #1 Пример использования func_get_arg()

<?php
function foo()
{
     
$numargs func_num_args();
     echo 
"Количество аргументов: $numargs\n";
     if (
$numargs >= 2) {
         echo 
"Второй аргумент: " func_get_arg(1) . "\n";
     }
}

foo(123);
?>

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

Количество аргументов: 3
Второй аргумент: 2

Пример #2 Использование func_get_arg() до и после PHP 5.3

test.php
<?php
function foo() {
    include 
'./fga.inc';
}

foo('Первый аргумент''Второй аргумент');
?>

fga.inc
<?php

$arg 
func_get_arg(1);
var_export($arg);

?>

Вывод до PHP 5.3:

'Второй аргумент'

Вывод в PHP 5.3 и выше:

Warning: func_get_arg():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc on line 3
false

Пример #3 Пример передачи аргументов по ссылке и по значению с func_get_arg()

<?php
function byVal($arg) {
    echo 
'Передан          : 'var_export(func_get_arg(0)), PHP_EOL;
    
$arg 'baz';
    echo 
'После изменения  : 'var_export(func_get_arg(0)), PHP_EOL;
}

function 
byRef(&$arg) {
    echo 
'Передан          : 'var_export(func_get_arg(0)), PHP_EOL;
    
$arg 'baz';
    echo 
'После изменения  : 'var_export(func_get_arg(0)), PHP_EOL;
}

$arg 'bar';
byVal($arg);
byRef($arg);
?>

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


Передан : 'bar'
После изменения : 'baz'
Передан : 'bar'
После изменения : 'baz'

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


Передан : 'bar'
После изменения : 'bar'
Передан : 'bar'
После изменения : 'baz'

Примечания

Замечание:

Так как для определения параметров данной функции необходим контекст выполнения, она не может быть передана в качестве параметра в версиях PHP до 5.3.0. Если функцию все же необходимо передать, то нужно присвоить ее переменной, которую уже можно использовать при передаче.

Замечание:

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

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