Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta sobre lo permisible en los valores de los parámetros de las funciones

Estas en el tema de Consulta sobre lo permisible en los valores de los parámetros de las funciones en el foro de PHP en Foros del Web. mmm hola a todos, Al grano: ¿Se pueden poner variables en los valores de los parámetros de una función? Cuando le doy a un parámetro ...
  #1 (permalink)  
Antiguo 21/01/2014, 11:59
Avatar de eduardobrutaldeath  
Fecha de Ingreso: agosto-2013
Ubicación: América
Mensajes: 306
Antigüedad: 10 años, 8 meses
Puntos: 3
Consulta sobre lo permisible en los valores de los parámetros de las funciones

mmm hola a todos,
Al grano: ¿Se pueden poner variables en los valores de los parámetros de una función?
Cuando le doy a un parámetro un valor numérico o string no hay problema, pero cuando coloco variables da error.. aquí un ejemplo que funciona correctamente:

Código PHP:
Ver original
  1. function loquesea($p_1, $p_2, $p_3){
  2.    echo $p_1 + $p_2;
  3. };
  4. loquesea(1, 2, 3);

Aquí el que No funciona:

Código PHP:
Ver original
  1. function loquesea($p_1, $p_2, $p_3){
  2.    $a = 1;
  3.    $b = 2;
  4.    $c = 3;
  5.    echo $p_1 + $p_2;
  6. };
  7. loquesea($a, $b, $c); //variables como valores de parámetros

Me parece extraño que no funcione porque, como deben saber, sí se pueden almacenar variables dentro los valores de otras variables:

Código PHP:
Ver original
  1. $y  = 1;
  2. $w = 2;
  3. $x  = $y + $w;
  4. echo $x;
  #2 (permalink)  
Antiguo 21/01/2014, 12:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta sobre lo permisible en los valores de los parámetros de las funci

Es normal que lo siguiente no sirva:
Código PHP:
Ver original
  1. function loquesea($p_1, $p_2, $p_3){
  2.    $a = 1;
  3.    $b = 2;
  4.    $c = 3;
  5.    echo $p_1 + $p_2;
  6. };
  7. loquesea($a, $b, $c); //variables como valores de parámetros

La razón es sencilla: el ámbito de las variables.

Las variables $a, $b y $c las defines dentro de la función, por lo tanto existen dentro de la función únicamente.

No puedes usarlas fuera de la función porque están fuera del ámbito donde fueron definidas.

Eso se explica en el siguiente manual: http://www.php.net/manual/en/languag...bles.scope.php

Ahora, por su puesto que se pueden usar variables, así:

Código PHP:
Ver original
  1. function loquesea($p_1, $p_2, $p_3){
  2.    echo $p_1 + $p_2;
  3. };
  4.  
  5. $a = 1;
  6. $b = 2;
  7. $c = 3;
  8.  
  9. loquesea($a, $b, $c); //variables como valores de parámetros

¿Por qué?

Porque las variables, para poder ser usadas, deben definirse en el mismo contexto donde serán usadas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/01/2014, 12:27
Avatar de eduardobrutaldeath  
Fecha de Ingreso: agosto-2013
Ubicación: América
Mensajes: 306
Antigüedad: 10 años, 8 meses
Puntos: 3
Respuesta: Consulta sobre lo permisible en los valores de los parámetros de las funci

Cita:
Iniciado por pateketrueke Ver Mensaje
Es normal que lo siguiente no sirva:
Código PHP:
Ver original
  1. function loquesea($p_1, $p_2, $p_3){
  2.    $a = 1;
  3.    $b = 2;
  4.    $c = 3;
  5.    echo $p_1 + $p_2;
  6. };
  7. loquesea($a, $b, $c); //variables como valores de parámetros

La razón es sencilla: el ámbito de las variables.

Las variables $a, $b y $c las defines dentro de la función, por lo tanto existen dentro de la función únicamente.

No puedes usarlas fuera de la función porque están fuera del ámbito donde fueron definidas.

Eso se explica en el siguiente manual: http://www.php.net/manual/en/languag...bles.scope.php

Ahora, por su puesto que se pueden usar variables, así:

Código PHP:
Ver original
  1. function loquesea($p_1, $p_2, $p_3){
  2.    echo $p_1 + $p_2;
  3. };
  4.  
  5. $a = 1;
  6. $b = 2;
  7. $c = 3;
  8.  
  9. loquesea($a, $b, $c); //variables como valores de parámetros

¿Por qué?

Porque las variables, para poder ser usadas, deben definirse en el mismo contexto donde serán usadas.

Gracias por la ayuda,
Una última consulta por favor
Antes ya había pensado en una solución parecida pero no había funcionado, mira hice esto:

Código PHP:
Ver original
  1. function loquesea($p_1, $p_2, $p_3){
  2.                        global $a;
  3.                        global $b;
  4.                        global $c;
  5.  
  6.             $a = 1;
  7.             $b = 2;
  8.             $c = 3;
  9.             echo $p_1 + $p_2 + $p_3;
  10.         };loquesea($a, $b, $c);

Como puedes ver, dentro de mi función estaba convirtiendo a mis variables en globales pero igual el código seguía sin funcionar ¿Por qué?
  #4 (permalink)  
Antiguo 21/01/2014, 12:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta sobre lo permisible en los valores de los parámetros de las funci

Cita:
Iniciado por eduardobrutaldeath Ver Mensaje
Como puedes ver, dentro de mi función estaba convirtiendo a mis variables en globales pero igual el código seguía sin funcionar ¿Por qué?
Eso es simple, y es teoría de programación en general, no es nada particular a PHP.

Cuando invocas una función o método, los argumentos que especifiques se deben evaluar primero, eso sucede siempre así.

El asunto es que declaras las variables globales (lo cual está muy mal) dentro del cuerpo de la función, y dicho código se ejecutará sólo al invocar la función, no antes.

Dicho así, las variables $a, $b y $c siguen sin existir al momento de evaluarse los argumentos, entonces cuando se invoca la función es como si realmente no hubieras hecho nada.

¿Se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/01/2014, 12:47
Avatar de eduardobrutaldeath  
Fecha de Ingreso: agosto-2013
Ubicación: América
Mensajes: 306
Antigüedad: 10 años, 8 meses
Puntos: 3
Respuesta: Consulta sobre lo permisible en los valores de los parámetros de las funci

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso es simple, y es teoría de programación en general, no es nada particular a PHP.

Cuando invocas una función o método, los argumentos que especifiques se deben evaluar primero, eso sucede siempre así.

El asunto es que declaras las variables globales (lo cual está muy mal) dentro del cuerpo de la función, y dicho código se ejecutará sólo al invocar la función, no antes.

Dicho así, las variables $a, $b y $c siguen sin existir al momento de evaluarse los argumentos, entonces cuando se invoca la función es como si realmente no hubieras hecho nada.

¿Se entiende?
aaa ya me di cuenta, estuvo mal convertir las variables dentro de la función a globales porque es lo mismo que nada, o sea que en realidad ya tenía la solución en mi mente pero la apliqué mal, porque si hubiera declarado a las variables afuera ya no hubiera tenido necesidad de convertirlas y hubiera funcionado mi código desde el inicio
Bueno muchas gracias por tu ayuda

Etiquetas: funciones, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:42.