2011-03-26 33 views
23

¿Cómo puedo pasar un parámetro opcional a una función PHP? Por ejemplo,Pasar un parámetro opcional en PHP Función

Para que pueda llamar a la función pasando un parámetro o ambos. Por ejemplo:

test($required, $optional) 
test($required); 

Gracias.

+0

wow casi cada una de las respuestas a esta pregunta dice exactamente lo mismo. No sé cómo te las arreglaste para elegir uno porque están todos correctos. :) – edwardtyl

Respuesta

40

intente esto:

function test($required, $optional = NULL){..} 

entonces usted puede llamar

test($required, $optional) 

y con $optional nula

test($required); 
+0

¿Quieres decir que cuando pase '$ required' AND '$ optional' con valores, esto' $ optional = NULL' se sobrescribirá? funcionará perfectamente con los datos '$ optinal'? – Neocortex

2

acaba de establecer los parámetros por defecto en la función de su ex.

function test($required, $optional = null, ...) 

ahora usted puede llamar a su función como esta

test($required, $optional) 
test($required); 
0

leyeron este http://php.net/manual/en/function.func-get-args.php

no haga pasar ningún argumento cuando decalare una función , como a continuación

function myMin() { 
     $list = func_get_args(); 
     $min = NULL; 
     if (count($list)>0) $min = $list[0]; 
     for ($i=1; $i<count($list); $i++) { 
     if ($min > $list[$i]) $min = $list[$i]; 
     } 
     return $min; 
    } 

    print("\n Calling a function that uses func_get_args():\n"); 
    print(" ".myMin()."\n"); 
    print(" ".myMin(5)."\n"); 
    print(" ".myMin(5, 6, 2)."\n"); 
    print(" ".myMin(5, 6, 2, 9, 5, 1, 4, 1, 3)."\n"); 
?> 
7

1) Se puede definir valores por defecto para los argumentos de este modo:

function test($required, $optional = false) {} 

2) Puede usar func_num_args() para obtener la cantidad de argumentos, func_get_arg ($ n) para obtener el n'th argumento o func_get_args() para obtener una matriz de todos los argumentos.

puede encontrar un buen resumen aquí: Function arguments

+0

+1 por mencionar otra forma –

+0

sí +1 por mencionar otra forma. Seguro que es mejor que repetir una respuesta para una página entera. –

4

También puede hacer esto:

function test($required, $optional = ''){ 
    #code 
} 

al llamar:

test($required) 

o:

test($required, $optional = 'something') 
Cuestiones relacionadas