Foreach l oop: исключить отображаемое значение - PullRequest
0 голосов
/ 11 марта 2020

У меня есть Массив с 15 изображениями, я хочу создать 5 слайдов с этими 15 изображениями, значит 2-3 изображения на слайд (зависит от переменной $ mode).

<?php  
 $i = 1;
  for ($x = 0; $x <= 5; $x++) { // this for loop is for creating 5 slides
                 if($i % 3 == 0){
                 $CssClass = 'three_slide';
                 $mode = 3;
            }
            else if($i % 3 == 1){
                $CssClass = ' 2 two_slide'; 
                $mode = 2;
            }
            else if($i % 3 == 2){
                $CssClass = ' 3 three_slide_flip';
                $mode = 3;
            }



        ?>
          <div class="arch-slider-item  <?php echo $CssClass; ?>">
              <?php 
                foreach( $images as $image_id ){
                    if($i <= $modRe){ ?>
                        <img src="<?php echo wp_get_attachment_url( $image_id);?>">

                    <?php 
                        } 
                    $i++
                    }
                ?>
         </div>

        <?php 

        } 
?>  

Проблема в том, что каждый слайд имея одинаковые изображения, поэтому изображения из предыдущего слайда следует исключить на следующем слайде, чтобы на каждом слайде были уникальные изображения.

1 Ответ

0 голосов
/ 11 марта 2020
<?php  
// Reformatted code and displayed the numbers, please make necessary changes to make this work with your requirements.
 $i = 1;

 $images = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
 var_dump($images);
 $modRe = 0;
 $current_index = 0;

for ($x = 0; $x <= 5; $x++) { // this for loop is for creating 5 slides
  if($i % 3 == 0){
    $CssClass = 'three_slide';
    $mode = 3;
  }
  else if($i % 3 == 1){
    $CssClass = ' 2 two_slide'; 
    $mode = 2;
  }
  else if($i % 3 == 2){
    $CssClass = ' 3 three_slide_flip';
    $mode = 3;
  }
?>
  <div class="arch-slider-item  <?php echo $CssClass; ?>">
    <?php      
      var_dump('Index I = '.$i); // Check the i looping value
      var_dump('Mode = '.$mode);  // Check the mode - having how much images in this slide
      $limit = $current_index+$mode;
      for($index = $current_index; $index < $limit; $index++) {
        if(isset($images[$index])) {
          echo $images[$index]; // Replace code here with your, having single slide and multiple images
        }
        $current_index++;        
      }
      echo "<br>"; // Break the slide
      ?>
  </div>

<?php 
  $i++;
}
...