Ankündigung

Einklappen
Keine Ankündigung bisher.

Code in Foreach loop ausschließen / Foreach loop pausieren und fortführen.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Code in Foreach loop ausschließen / Foreach loop pausieren und fortführen.

    PHP-Code:
    <?php if ($q === 'encyclopedia') {
        
    $result encyclopedia(); ?>
        <div class="col-6">
            <h4>FILM</h4>
            <ul>
                <?php foreach ($result as $key) {
                    if (
    $key['type'] === 'FILM') { ?>
                        <li><a href="watch.php?id=<?php echo $key['id']; ?>"><?php echo $key['name']; ?></a></li>
                    <?php }
                } 
    ?>
            </ul>
        </div>
        <div class="col-6">
            <h4>SERIE</h4>
            <ul>
                <?php foreach ($result as $key) {
                    if (
    $key['type'] === 'SERIE') { ?>
                        <li><a href="watch.php?id=<?php echo $key['id']; ?>"><?php echo $key['name']; ?></a></li>
                    <?php }
                } 
    ?>
            </ul>
        </div>
    <?php ?>
    Hallo wie ihr sehen könnt doppelt sich hier mein code da ich zwei eine foreach schleife mit dem gleichen query auf eine if prüfen muss. Git es eine möglichkeit den mitteren html code zu überspringen so das nur noch eine foreach nötig ist um bei beide "column" mit FILM und SERIE auszugeben?

  • #2
    Naja, so wie du das baust geht es wohl nicht anders, Aber was stört dich daran.

    Kommentar


    • #3
      Am einfachsten ist es wohl wenn du Collections verwendest. Im konkreten Fall könntest du dann groupBy verwenden und dann eine verschachtelte Schleife drüberlaufen lassen.

      Kommentar


      • #4
        Sehe ich nicht so. Am einfachsten ist immer noch der vom TE erstellte Code, der ist nämlich schon fertig.

        Kommentar


        • #5
          Ich sehe jetzt auch nicht so das Problem mit den zwei Foreach-Schleifen. Aber so könnte man es ggf. machen:

          PHP-Code:
          <?php
          $list 
          = array(
              array(
          'key' => 'film''name' => 'Foo'),
              array(
          'key' => 'serie''name' => 'Bar'),
              array(
          'key' => 'film''name' => 'FooBar')
          );

          $filme = array();
          $serien = array();

          foreach (
          $list as $item) {
              switch(
          $item['key']) {
                  case 
          'film':
                      
          $filme[] = sprintf('<li>%s</li>'$item['name']);
                  break;
                  case 
          'serie':
                      
          $serien[] = sprintf('<li>%s</li>'$item['name']);
                  break;
              }
          }

          echo 
          implode(' '$filme);
          echo 
          implode(' '$serien);
          ?>

          Kommentar


          • #6
            PHP-Code:
            $list = array(
                array(
            'key' => 'film''name' => 'Foo'),
                array(
            'key' => 'serie''name' => 'Bar'),
                array(
            'key' => 'film''name' => 'FooBar')
            );

            $filtered array_filter($list, function($item) {
                return 
            $item['key'] == 'film';
            });

            var_dump($filtered); 

            Kommentar

            Lädt...
            X