Ejecuta un bucle que tiene una función dentro de ella

Tengo un problema tratando de ejecutar un código dentro del bucle, mi bucle constan de una función.

Aquí está mi código:

$new = array(1,2,3,4);
for($i=0;$i<=3;$i++){
$val = $new[$i];



function myfunction($value) {   
    //Do something
}

echo $val;
}

El problema es que el código sólo las salidas del 1 de valor en mi matriz. Estoy muy confundido, no soy yo supongo que para declarar una función dentro del bucle?

  • ¿Por qué hay una función en el bucle?
  • como las respuestas correctas ya se han dado, una breve noticia de por qué sucede esto: el código intenta redefinir la función de 3 veces, lo cual no está permitido en PHP. Una sugerencia: utilice error_reporting(E_ALL); en el inicio de la secuencia de comandos o puesto en php.ini, mientras que el aprendizaje / desarrollo – con esta opción, usted hubiera visto a lo largo de las líneas de «fatal error, tratando de redefinir la función myFunction en…»
  • for($i=0;$i<=3;$i++){ $val = $new[$i]; puede ser escrito como foreach ($new as $val) { ...

9 Kommentare

  1. 8

    El código termina con un error Fatal, ya que en la segunda iteración se trata para volver a declarar la función myfunction. Es por eso que es sólo impresión primer valor de la matriz.

    Con el fin de evitar este fatal error puede comprobar que si la función ya ha sido definido mediante function_exists() función como esta:

    $new = array(1,2,3,4);
    for($i=0;$i<=3;$i++)
    {
        $val = $new[$i];
        if(!function_exists('myfunction'))
        {
            function myfunction($value) {
                //Do something
            }
        }
        echo $val;
    }

    PHP es un lenguaje de secuencias de comandos y es sintácticamente correcto para declarar una función dentro del bucle for o en el interior de declaración de si, pero es una mala práctica y puede causar una gran cantidad de errores después de esto.

    La mejor manera es declarar una función fuera del bucle, y, si es necesario, llame a él desde dentro de un bucle como este:

    <?php
    function myfunction($value) {
        //Do something
    }
    
    $new = array(1,2,3,4);
    for($i=0;$i<=3;$i++)
    {
        $val = $new[$i];
        myfunction($value); //may you was intended to pass $val here?
        echo $val;
    }
    • Me siento como if(!function_exists('myfunction')) debe ser incorporado en el lenguaje de especificación. Si alguien quiere declarar una función dentro de un bucle (que está permitido y tiene usos muy interesantes,), no debería tener que recurrir a la misma repetitivo cada vez.
  2. 6

    No declarar la función dentro del bucle, declarar antes del bucle y, a continuación, llamar a la misma dentro del bucle con myFunction($value);

    • «declarar que antes de» … o después 😉
    • Psh, siguiendo las mejores prácticas de programación, normalmente se desea declarar sus funciones en primer lugar. Pero cierto, PHP te permitirá declarar después. =P
  3. 5

    la función debe ser en un procedimiento independiente

    $new = array(1,2,3,4);
    for($i=0;$i<=3;$i++)
    {
       $val = $new[$i];
       myfunction($val)
       echo $val;
    }

    entonces este es tu función

    function myfunction($value) 
    {   
        //Do something
    }
    • Gracias hombre, yo sabía que me estaba perdiendo de algo pequeño, he perdido una hora tratando de encontrar dis, me siento tan dum rito ahora 😀
  4. 1
    • Declarar la función fuera del bucle
    • devolver el valor de la función, o dejar que la función de salida de datos

    Por ejemplo:

    function myfunction($value) {   
      //Do something
      echo $value;
    }
    
    $new = array(1,2,3,4);
    for($i=0;$i<=3;$i++) {
      myfunction($new[$i]);
    }
  5. 0

    que no es la escritura la manera de hacerlo…
    en primer lugar declarar la función fuera del bucle

    function myfunction($value) {   
        //Do something
    }
    
    
    $new = array(1,2,3,4);
    for($i=0;$i<=3;$i++){
       $val = $new[$i];
       myfunction( $val);  //call function where u wanted... here (in your  case)
       echo $val;
    }
  6. 0

    Estoy asumiendo que usted desea imprimir los 4 primeros elementos de la matriz.
    hacer algo como esto

    function myfunction() {   
      $new = array(1,2,3,4);
      for($i=0;$i<=3;$i++){
        $val = $new[$i];
        echo $val;
      }
    }
    
    myfunction();
  7. 0

    Usted debería declarar la función fuera del bucle

    function myfunction($value) {    
        return ($value + 25); //an example
    }
    
    $new = array(1,2,3,4); 
    for($i = 0; $i < count($new); $i++){
        echo myfunction($new[$i]); 
    } 

    También debe establecer el bucle desde 0 hasta el final de la matriz, por lo que si usted tiene más de 4 entradas de la matriz el código debe aceptar

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein