Saltar al contenido

Diferencia entre foreach y forelse en Laravel

Posterior a de una prolongada búsqueda de información pudimos resolver este inconveniente que pueden tener muchos de nuestros usuarios. Te regalamos la respuesta y nuestro deseo es serte de mucha ayuda.

Solución:

Creo que la respuesta a su pregunta es que, esencialmente, ForElse es un bucle ForEach, pero con manejo adicional para entradas vacías.

De los documentos de Laravel 5 en Blade Templates, un ejemplo que ilustra ambos bucles con la misma lista de Usuarios como Entrada:

@foreach ($users as $user)
    

This is user $user->id

@endforeach @forelse ($users as $user)
  • $user->name
  • @empty

    No users

    @endforelse

    Ahora, si comparamos esto con el código fuente de Laravel Framework para ver cómo se compilan los bucles (todas las construcciones de Blade se compilan en HTML cuando PHP las representa en la página web):

       /**
         * Compile the for-each statements into valid PHP.
         *
         * @param  string  $expression
         * @return string
         */
        protected function compileForeach($expression)
        
            preg_match('/( *(.*) +as *(.*))$/is', $expression, $matches);
    
            $iteratee = trim($matches[1]);
    
            $iteration = trim($matches[2]);
    
            $initLoop = "$__currentLoopData = $iteratee; $__env->addLoop($__currentLoopData);";
    
            $iterateLoop = '$__env->incrementLoopIndices(); $loop = $__env->getLastLoop();';
    
            return "";
        
    
    
       /**
         * Compile the for-else statements into valid PHP.
         *
         * @param  string  $expression
         * @return string
         */
        protected function compileForelse($expression)
        
            $empty = '$__empty_'.++$this->forElseCounter;
    
            preg_match('/( *(.*) +as *(.*))$/is', $expression, $matches);
    
            $iteratee = trim($matches[1]);
    
            $iteration = trim($matches[2]);
    
            $initLoop = "$__currentLoopData = $iteratee; $__env->addLoop($__currentLoopData);";
    
            $iterateLoop = '$__env->incrementLoopIndices(); $loop = $__env->getLastLoop();';
    
            return "";
        
    

    Esencialmente, el bucle ForElse tiene un código integrado y una verificación de compilación para una entrada vacía, en cuyo caso genera opcionalmente una plantilla de visualización alternativa para la entrada vacía.

    Me imagino que puede usar un bucle ForEach en todos los casos en que podría usar un bucle ForElse, agregando que incluye y vacía los cheques que ForElse podría atrapar por usted.


    Enlaces de referencia:

    1. Plantillas de hoja
    2. Funciones de compilación de Blade View

    los foreach bucle como usted describió bucles sobre cada elemento en un arraylos foresee bucle en esencia es exactamente lo mismo con un elemento adicional como ya notó, el else declaración. El uso principal de esto para usar cuando tiene un vacío array.

    Por lo tanto, recorre todos los elementos y, por ejemplo, muestra una fila de una tabla pero coloca un aviso vacío cuando no tiene ningún dato.

    Ver la diferencia básica es en caso de que no se encuentren datos
    foreach bucle que tienes que comprobar count condición y luego imprimir según la salida. Esto aumentará un poco el esfuerzo, pero en forelse se verifica automáticamente y se usa @empty tienes que echo datos no encontrados..

    Si sostienes algún incógnita y capacidad de ascender nuestro tutorial eres capaz de ejecutar una aclaración y con placer lo estudiaremos.

    ¡Haz clic para puntuar esta entrada!
    (Votos: 0 Promedio: 0)



    Utiliza Nuestro Buscador

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *