elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Pregunta]: Modificar la variable original en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: Modificar la variable original en PHP  (Leído 3,729 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: Modificar la variable original en PHP
« en: 30 Marzo 2021, 18:44 pm »

Hola,

tengo 2 archivos PHP donde en el primer archivo tengo definida una función:
Código
  1. function myFunction($variable)
  2. {
  3.      $variable = 3;
  4. }
  5.  



En mi segundo archivo PHP tengo definida $variable (no es un parámetro como antes), y una llamada a myFunction()
Código
  1. $variable = 7;
  2. myFunction($variable); // entonces le mando por parámetro la variable a la que le quiero modificar el valor
  3.  

Entiendo que con return en la función y $variable = myFunction($variable); asunto arreglado pero necesito hacerlo de esta forma (si es que se puede).

Capaz usando global $variable o algo así, se pueda hacer algo...


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: [Pregunta]: Modificar la variable original en PHP
« Respuesta #1 en: 30 Marzo 2021, 18:51 pm »

Puedes hacerlo con global o pasando el parametro como referencia. Los globals se desaconsejan TOTALMENTE y son mala práctica. No hay ni un caso contado donde tenga sentido usar global. Las funciones que modifican cosas fuera de su scope tampoco se recomiendan y también se consideran mala práctica, aunque en PHP no es tan mal visto porque el propio lenguaje ofrece funciones que modifican fuera de su scope, vease sort() por ejemplo.


Dicho esto,

Código
  1. $variable = 7;
  2.  
  3. function myFunction(&$variable)
  4. {
  5.    $variable = 3;
  6. }
  7.  
  8. myFunction($variable);
  9.  
  10. echo $variable; // 3



Notese el carácter & a la hora de definir los parámetros de la función. Es lo que hace que PHP pase la variable como referencia en vez de como valor.

https://www.php.net/manual/es/language.references.pass.php


Muy recomendable que te leas todos los puntos de esta página:

https://www.php.net/manual/es/language.references.php


PD: Los temas de PHP van al subforo de PHP.

Saludos


En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: Modificar la variable original en PHP
« Respuesta #2 en: 2 Abril 2021, 21:26 pm »

Gracias!

EDIT: Estoy teniendo un problema cuando quiero mandar como parametro NULL, ya que si no es nulo entonces si va a reemplazar el valor de la variable, pero si es nulo se toma como que no va a reemplazar nada.

El error dice que no se puede "Only variables can be passed by reference" tiene sentido que solamente variables se puedan pasar por referencia y no un valor nulo, ¿existe alguna manera?

EDIT 2:

Hay una solución que sería ponerle a ese parámetro:
Código
  1. function MyFunction(&$x = null) // por defecto si no se pone nada el valor será nulo
  2. {
  3.      // [...]
  4. }
  5.  
  6. MyFunction(); // si no quiero editar nada, dejo esto así..
  7.  

Esto me va bien, hasta que tengo dos variables entre ese parametro:
Código
  1. function MyFunction($a, &$x = null, $b) // por defecto si no pone nada el valor será nulo
  2. {
  3.     // [...]
  4. }
  5.  
  6. MyFunction('A', , 'B'); // si no quiero editar nada, dejo esto así.. pero que meto en medio de eso porque así como está dará un error..
  7.  
« Última modificación: 2 Abril 2021, 21:50 pm por Leguim » En línea

mchojrin

Desconectado Desconectado

Mensajes: 49



Ver Perfil WWW
Re: [Pregunta]: Modificar la variable original en PHP
« Respuesta #3 en: 3 Abril 2021, 15:04 pm »

¿No puedes cambiar el orden de los parámetros para la función? Siempre se intenta dejar los opcionales al final de la lista.

Otra forma de resolverlo sería incluir explícitamente un null en la llamada:

Código:
MyFunction('A', null, 'B');
En línea

¿Docker te trae de cabeza? https://mautic.leewayweb.com/docker-101
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificar variable externa (PHP)
PHP
Riki_89D 5 5,889 Último mensaje 21 Diciembre 2009, 02:47 am
por Red Mx
Modificar variable afuera de una definición
Scripting
laideker 3 2,801 Último mensaje 30 Abril 2011, 04:35 am
por leogtz
Windows 7 Ultimate x32 y x64 Original sin modificar « 1 2 »
Windows
Zorronde 10 16,856 Último mensaje 31 Diciembre 2011, 05:42 am
por Randomize
No consigo modificar variable global
Programación C/C++
Gamerpc 4 2,389 Último mensaje 23 Mayo 2018, 19:07 pm
por Gamerpc
[Resuelto] [Pregunta]: Pasar dato de variable (JS) a una variable PHP
PHP
Leguim 5 4,098 Último mensaje 21 Junio 2019, 16:33 pm
por mchojrin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines