# func_get_arg

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

func_get_arg — Devuelve un elemento de una lista de argumentos

### Descripción

func_get_arg(int `$arg_num`): mixed

Obtiene el argumento especificado de una lista de argumentos de una función definida por el usuario.

Esta función se puede usar junto con func_get_args() y func_num_args() para permitir a las funciones de usuario aceptar listas de argumentos de longitud variable.

### Parámetros

`arg_num`

  El índice del argumento. Los argumentos de las funciones se empiezan a contar desde cero.

### Valores devueltos

Devuelve el argumento especificado, o `false` en caso de error.

### Historial de cambios

Versión | Descripción
--- | ---
5.3.0 | Esta función ahora se puede usar en listas de parámetros.
5.3.0 | Si esta función es llamada desde el ámbito último de un archivo que ha sido incluido mediante una llamada a include o require desde dentro de una función en el archivo de llamada, ahora genera una advertencia y devuelve `false`.

### Errores/Excepciones

Genera una advertencia si se llama desde fuera de una función definida por el usuario, o si `arg_num` es mayor que el número de argumentos pasados actualmente.

### Ejemplos

Ejemplo #1 Ejemplo de func_get_arg()

`<?php
function foo()
{
$númargs = func_num_args();
echo "Número de argumentos: $númargs<br />\n";
if ($númargs >= 2) {
echo "El segundo argumento es: " . func_get_arg(1) . "<br />\n";
}
}
foo (1, 2, 3);
?>`

Ejemplo #2 Ejemplo de func_get_arg() antes y después de PHP 5.3

`prueba.php
<?php
function foo() {
include './fga.inc';
}
foo('Primer argumento', 'Segundo argumento');
?>
fga.inc
<?php
$arg = func_get_arg(1);
var_export($arg);
?>`

Salida anterior a PHP 5.3:

    'Segundo argumento'

Salida en PHP 5.3 y posterior:

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

Ejemplo #3 func_get_arg() ejemplo de argumentos byref (pasa un objeto como referencia) y byval (pasa un objeto como valor)

`<?php
function byVal($arg) {
echo 'Pasó como : ', var_export(func_get_arg(0)), PHP_EOL;
$arg = 'baz';
echo 'Tras el cambio: ', var_export(func_get_arg(0)), PHP_EOL;
}
function byRef(&$arg) {
echo 'Pasó como : ', var_export(func_get_arg(0)), PHP_EOL;
$arg = 'baz';
echo 'Tras el cambio: ', var_export(func_get_arg(0)), PHP_EOL;
}
$arg = 'bar';
byVal($arg);
byRef($arg);
?>`

El resultado del ejemplo sería:

Pasó como : 'bar'
Tras el cambio: 'bar'
Pasó como : 'bar'
Tras el cambio: 'baz'

### Notas

> Nota:

> Como esta función depende del ámbito actual para determinar los detalles del parámetro, no puede ser usada como parámetro de función en versiones anteriores a 5.3.0. Si se require pasar el valor, los resultados deben ser asignados a una variable y esta variable debería pasarse como parámetro.

> Nota:

> Si los argumentos se pasan por referencia, cualquier cambio en ellos se verá reflejado en los valores devueltos por esta función. A partir de PHP 7, los valores actuales también serán devueltos si los argumentos son pasados por valor.

> Nota: Esta función solamente devuelve una copia de los argumentos pasados, y no rinde cuentas de los argumentos predeterminados (no pasados).

### Ver también

- La sintaxis de `...` en PHP 5.6+
- func_get_args() - Devuelve un array que se compone de una lista de argumentos de función
- func_num_args() - Devuelve el número de argumentos pasados a la función