• ¿Quieres apoyar a nuestro foro haciendo una donación?, entra aquí.

Guia Con Un Codigo

Twinsen

Rambo de PC
Registrado
2009/01/05
Mensajes
9.071
Código:
function capitales()
{
$numero_argumentos = func_num_args();
$Pais = $numero_argumentos > 0 ? func_get_arg(0) : "España";
$Capital = $numero_argumentos > 1 ? func_get_arg(1) : "Madrid";
$habitantes = $numero_argumentos > 2 ? func_get_arg(2) : "muchos";
return ("Número de argumentos es: $numero_argumentos. La capital de $Pais es $Capital y tiene $habitantes habitantes.<br>");
}

echo capitales();
echo capitales("Portugal", "Lisboa");
echo capitales("Francia", "Paris", "muchísimos");

1. $numero_argumentos > 0 ? func_get_arg(0) : "España"; significa if ($numero_argumentos > 0) then func_get_arg(0) = "España"; ¿o me equivoco?

2. Intentando entender el programa. Primero muestro la funcion capitales. Se le asigna a $numero_argumentos el valor cero [Ya que revisamos capitales()] y luego en $pais chequeamos si es mayor que cero (eso creo). De ahi que me perdí

Eso. Muchas gracias
 
Estimado:

Una forma homologable de escribir los condicionantes es la siguiente:

Código:
<?php
$var = TRUE;
echo $var==TRUE ? 'TRUE' : 'FALSE'; // get TRUE
echo $var==FALSE ? 'TRUE' : 'FALSE'; // get FALSE
?>

es decir:

Código:
$Pais = $numero_argumentos > 0 ? func_get_arg(0) : "España";

es lo mismo que:
Código:
If ($numero_argumentos > 0) {

$Pais=func_get_arg(0);

else

$Pais="España";

}

Tu segunda pregunta no la entiendo.


Saludos!
 
No importa. Con tu explicación me quedo clarisimo.

Muchas gracias
 
Perdon por doblepostear.

Que es lo que hace exactamente func_get_arg(0) ??
 
Perdon por doblepostear.

Que es lo que hace exactamente func_get_arg(0) ??

Retorna el primer parámetro ingresado a la función.

Sirve para funciones cuyo número de parámetros son variables.

Por ejemplo:
Código:
function suma(){
$sumandos = func_get_args();
//Retorna el número de sumandos
$nSumandos = func_num_args();
$suma = 0;
for($i = 0 ; $i < $nSumandos ; $i++){
$suma += $sumandos[$i];
}
return $suma;
}

Si la llamas, por ejemplo así:

Código:
suma(1,2,3,4,5,6,7,8);

tienes que:

$sumandos[0] corresponde a 1...
func_get_arg(0) = $sumandos[0]
$sumandos[1] corresponde a 2...
$nSumandos corresponde a 8...

y la suma corresponde a 1+2+3+4+5+6+7+8.

Saludos!

Espero se haya aclarado tu duda. Saludos!
 
No. No me queda muy claro.

Pero debe de ser el estar webeando aca. Descansare y en un rato mas daré un nuevo vistazo a tu explicación. (O en otra jerga. "No eres tu soy yo". jajja)

Muchas gracias :)

P.D:

Esta linea:

$sumandos = func_get_args();

Hace que $sumandos[0]=1 $sumandos[1]=2 $sumandos[2]=3 $sumandos[3]=4 ....y asi ??
 
No. No me queda muy claro.

Pero debe de ser el estar webeando aca. Descansare y en un rato mas daré un nuevo vistazo a tu explicación. (O en otra jerga. "No eres tu soy yo". jajja)

Muchas gracias :)

Velo así:

Si existe una función
Código:
function nombreAnimal(){
echo func_get_arg(0);
}

y la llamas mediante:

Código:
nombreAnimal("perro","gato");

te retornará "perro" porque en la lista de argumentos, es el elemento que tiene índice 0.

Saludos
 
ya casi lo entendi. Por favor revisa el mensaje editado :)
 
Esta linea:

$sumandos = func_get_args();

Hace que $sumandos[0]=1 $sumandos[1]=2 $sumandos[2]=3 $sumandos[3]=4 ....y asi ??

Claro que si, pero sólo en el contexto del ejemplo que te dí, al final cada elemento del arreglo está correferenciado con los parámetros de la función.

en este caso el arreglo de argumentos era (1,2,3,4,5,6,7,8) pero puede tener cualquier valor ingresado por los parametros, y el largo del arreglo de parámetros siempre será func_num_args.

;D
 
Me quedo clarisimo. Jugue con los codigos y lo entendi perfectamente.

Muchas gracias. Seguire dando vueltas por aca ya que planeo terminar el verano programando en php y en algun framework.
 
Me quedo clarisimo. Jugue con los codigos y lo entendi perfectamente.

Muchas gracias. Seguire dando vueltas por aca ya que planeo terminar el verano programando en php y en algun framework.
Yo estoy haciendo un framework en PHP, de hecho tengo un post en pinned, por si te interesa, está en trabajo constante asi que ahi te sirve para aprender al menos las bases.

Saludos
 
Pero si te envie un mail incluso. Jajjaj

en fin.

Código:
function concatenar() {
$resultado = "";
$numero_argumentos=func_num_args();
$array_parametros = func_get_args();
for ($x=0;$x<$numero_argumentos;$x++) {
$resultado=$resultado . $array_parametros[$x];
}
return $resultado."<br>";
}
echo concatenar("Hola ","Mundo");
echo concatenar("Esto ","es ","una ","prueba ","de"," la potencia"," de este"," metodo");

?>

1. $resultado . $array ..... que significa ese puntito ?

2. Que es lo maravilloso del codigo ?. Que hace ?. Porque esas frases las puedo sacar sin necesidad de la función.

Si. puedo estar mas lento que de costumbre :P
 
Revisando el codigo. Casi lo tengo.

Solo que sigo sin entender esta linea: $resultado=$resultado . $array_parametros[$x]; y el papel que tiene el punto alli.

Gracias
 
Estimado, el punto ( . ) corresponde a un operador de concatenación.

Esto es:
Código:
$amigo = "Juan";
echo "Hola ".$amigo;

El resultado será:

Código:
Hola Juan
 
Estoy concadenando entonces: ""."Hola" (con X=0)

Cual es el sentido de eso ??

Por que si pongo: $resultado=$array_parametros[$x]; el codigo no funciona ?? (Deberia ya que al haber un "" da lo mismo, no?)
 
Estoy concadenando entonces: ""."Hola" (con X=0)

Cual es el sentido de eso ??

Por que si pongo: $resultado=$array_parametros[$x]; el codigo no funciona ?? (Deberia ya que al haber un "" da lo mismo, no?)

:D
 
Estoy concadenando entonces: ""."Hola" (con X=0)

Cual es el sentido de eso ??

Por que si pongo: $resultado=$array_parametros[$x]; el codigo no funciona ?? (Deberia ya que al haber un "" da lo mismo, no?)

Si concatenas algo con "" no tiene sentido claro está, y más aún, si concatenas dos textos estáticos tampoco tiene mucho sentido.

Si pones $resultado=$array_parametros[$x]; en el mismo ejemplo dices tu?, ahi debería imprimir por pantalla cada uno de los argumentos, si no funciona es porque no está recibiendo correctamente los argumentos y algo podría estar mal en el código.
 
Volver
Arriba