fbpx

Ejercicios Módulo 5

  • PHP

    Ejercicios Módulo 5

    Posted by Alexis Pizarro on 7 noviembre, 2021 en 4:47 pm

    No estoy entendiendo muy bien el ejercicio de SCOPES.

    Realiza un script que cuente con una variable global:$a = “Global”;y una función llamada modifyGlobal() con un parámetro $b que reciba un argumento por referencia. En el cuerpo de la función:Imprime el valor de $b
    modifica el valor de $b para que sea: “Modificado dentro de la función”
    y retorna $b
    Por último invoca la función y debajo imprime el valor de $a
    El resultado de $a debería de ser “Modificado dentro de la función”.

    Al asignar la variable $a, luego creo la función y designo valores a $b, este no tiene conexión con la variable $a, por lo que no retorna ningún resultado que modifique $b en la función.

    Quizá lo hice de modo incorrecto o me faltó un paso o quizá el ejercicio está mal expuesto.

    Esta es la función que funciona.

    $a = "Gobal";
    
    function modifyGlobal(&$a){
        $a = "Modificado dentro de la función";
        return $a;
    }
    
    modifyGlobal($a);
    echo $a;

    Pero no entiendo como debe quedar con la variable $b usandola con paso de referencia.

    $a = "Gobal";
    
    function modifyGlobal(&$b){
        $b = "Modificado dentro de la función";
        return $b;
    }
    
    modifyGlobal($b);
    echo $a;

    Gracias.

    • Esta discusión fue modificada 9 meses, 2 semanas por  Alexis Pizarro.
    Alexis Pizarro respondido 9 meses, 1 semana 2 Miembros · 2 Respuestas
  • 2 Respuestas
  • Angel Sánchez Espinoza

    organizador
    8 noviembre, 2021 en 5:12 pm

    Hola Alexis, voy a explicar linea por linea, de tu segunda parte del código:

    1. $a = “Gobal”; –> Aquí declaramos una variable global, que puede ser usada dentro y fuera de funciones.
    2. function modifyGlobal(&$b){ –> En esta parte creamos una función, la cual va a recibir un valor, que será guardado como “$b”. Puede ser cualquier nombre, pero tu así lo elegiste.
    3. $b = “Modificado dentro de la función”; –> Aquí le estas dando un valor a la variable, que en realidad deberías de estar cambiando, ya que al llamar a la función tu deseas que se vaya el valor de “$a”, esto lo explico mas adelante.
    4. return $b; –> Aquí estas retornando el valor de la variable “$b”.
    5. modifyGlobal($b); –> Aquí es donde esta tu problema, estas llamando la función e intentas enviar una variable como parámetro, pero debería de ser una variable que ya exista, tu envías la variable “$b” que no existe. Deberías de mandar “$a”. Con ese cambio se soluciona el problema.
    6. echo $a; –> Al final imprimes “$a”, pero como en realidad no has hecho nada con ella, imprime lo mismo “Gobal”.

    Tal vez también tengas un problema con el orden de como se ejecuta este código. Te adjunto una imagen que numera cada linea que se va ejecutando.

    Me confirmas si todo quedó claro, por favor. 😀

  • Alexis Pizarro

    Miembro
    8 noviembre, 2021 en 8:10 pm

    Perfecto!

    Tenías razón. Solo tenía que asegurarme de pasar la referencia, en este caso (&$b) y luego, abajo, llamar la variable $a en la función para que se modifique.

    Era muy simple pero me hice un lío sin darme cuenta jajaja

    Muchas gracias.

Start of Discussion
0 de 0 respuestas Junio 2018
Ahora