PHP 8.6.0 Beta 1 is available for testing

func_get_args

(PHP 4, PHP 5, PHP 7, PHP 8)

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

Описание

function func_get_args(): array

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

Функцию допускается вызывать с функциями 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 "Аргумент No$i: " . $arg_list[$i] . "\n";
 }
}
foo(1, 2, 3);
?>

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

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

Пример #2 Пример передачи в функцию 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);
?>

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


Передан : array (
0 => 'bar',
)
После изменения : array (
0 => 'baz',
)
Передан : array (
0 => 'bar',
)
После изменения : array (
0 => 'baz',
)

Примечания

Замечание: Начиная с PHP 8.0.0 семейство функций func_*() стремится к большей прозрачности в отношении именованных аргументов, поскольку обрабатывают аргументы так, как если бы каждый из них передали позиционно, а аргументы, которые пропустили, заменяют значениями по умолчанию. Функция игнорирует коллекцию неизвестных именованных аргументов переменной длины. Доступ к собранным неизвестным именованным аргументам получают только через параметр с переменным количеством аргументов.

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

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

Смотрите также

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
16
cobrattila at gmail dot com
6 years ago
If you want to get the arguments by reference, instead of func_get_args() you can simply use
<?php
function args_byref(&...$args) {
 // Modify the $args array here
}
?>

Credits should go to Markus Malkusch for pointing this out on Stackoverflow.
https://stackoverflow.com/a/29181826/1426064 
+Добавить

AltStyle によって変換されたページ (->オリジナル) /