2017-07-23 47 views
0

Im編輯Wordpress插件,並且如果爲多個圖片設置滑塊,它會顯示一個選項,它會顯示帖子列表中的所有圖片,但我只需要首先。如何在第一次循環後停止鍛鍊?PHP - 在顯示的第一張圖片處停止使用foreach

有代碼

<?php if(isset($postMetaData['_otw_slider_image']) && $postMetaData['_otw_slider_image']){?> 
        <?php $imagePath = parse_url($sliderImages[0]);?> 
        <?php if(isset($sliderImages[0])){?> 
         <?php if(isset($this->listOptions['image_link']) && in_array($this->listOptions['image_link'], array('lightbox'))){?> 
          <?php $first_shown = false; ?> 
          <?php foreach($sliderImages as $sImage){?> 
           <?php $imagePath = parse_url($sImage);?> 
           <a href="<?php echo $this->otwImageCrop->resize($imagePath['path'], $imageLightboxWidth, $imageLightboxHeight, $this->imageCrop, $this->imageWhiteSpaces, $this->imageBackground, $imageLightboxFormat)?>" rel="otw_fslide_<?php echo $post->ID?>" title="<?php echo htmlentities($post->post_title);?>" class="otw_in_slider otw_in_slider_<?php echo intval($first_shown)?>" > 
            <?php if(!$first_shown){?> 
             <img src="<?php echo $this->otwImageCrop->resize($imagePath['path'], $this->imageWidth, $this->imageHeight, $this->imageCrop, $this->imageWhiteSpaces, $this->imageBackground, $this->imageFormat)?>" alt="" /> 
            <?php } ?> 
           </a> 
           <?php $first_shown = true;?> 
          <?php }?> 
         <?php }elseif(isset($this->listOptions['image_link']) && in_array($this->listOptions['image_link'], array('single'))){?> 
          <a href="<?php echo $permaLink?>"> 
           <img src="<?php echo $this->otwImageCrop->resize($imagePath['path'], $this->imageWidth, $this->imageHeight, $this->imageCrop, $this->imageWhiteSpaces, $this->imageBackground, $this->imageFormat)?>" alt="" /> 
          </a> 
         <?php }else{ ?> 
          <img src="<?php echo $this->otwImageCrop->resize($imagePath['path'], $this->imageWidth, $this->imageHeight, $this->imageCrop, $this->imageWhiteSpaces, $this->imageBackground, $this->imageFormat)?>" alt="" /> 
         <?php }?> 
        <?php }?> 
       <?php }else{?> 
        <div class="otw_portfolio_manager-slider" data-animation="slide"> 
         <ul class="slides otw_portfolio_ul_slider"> 
          <?php foreach($sliderImages as $sliderImage){?> 
           <li> 
           <?php 
            $imagePath = parse_url($sliderImage); 
            $sliderImgLink = false; 
           ?> 
           <?php if(isset($this->listOptions['image_link']) && in_array($this->listOptions['image_link'], array('lightbox'))){ $sliderImgLink = true;?> 
            <a href="<?php echo $sliderImage?>" rel="otw_fslide_<?php echo $post->ID?>" class="otw_portfolio_manager-fancybox-slider" title="<?php echo htmlentities($post->post_title);?>"></a> 
           <?php }?> 
           <?php if(isset($this->listOptions['image_link']) && in_array($this->listOptions['image_link'], array('single'))){ $sliderImgLink = true;?> 
            <a href="<?php echo $imgLink?>" title="<?php echo $post->post_title;?>"> 
           <?php }?> 
            <img src="<?php echo $this->otwImageCrop->resize($imagePath['path'], $this->imageWidth, $this->imageHeight, $this->imageCrop, $this->imageWhiteSpaces, $this->imageBackground, $this->imageFormat)?>" alt="" data-item="media"> 
           <?php if($sliderImgLink){?> 
            </a> 
           <?php }?> 
           </li> 
          <?php }?> 
          </ul> 
         </div> 
        <?php }?> 
+1

您可以停止與foreach循環'打破;' – steven

+3

太多'

+2

如果你只需要第一個結果,爲什麼你要循環? – BeetleJuice

回答

2

它你可以在你的代碼做相同的只是例子。

$i = 0; 

foreach ($largedata as $data) { 
    if($i == 0) { 
     echo $data->id; 
    } 
    $i++; 
} 

希望你能從例子中得到它。

+0

如果您只想處理第一張圖像,您不想循環瀏覽所有內容。 – localheinz

+0

@localheinz是的,我知道這一點。但我只是舉了個例子.. –

0

代替不必要通過$sliderImages整個陣列循環(假設這裏它是一個數組,而不是一個Iterator),只要抓住從數組中第一滑塊圖像:

<?php if (isset($this->listOptions['image_link']) && in_array($this->listOptions['image_link'], array('lightbox'))) { ?> 
    <?php $sliderImages = array_values($sliderImages); ?> 
    <?php $sImage = $sliderImages[0]); ?> 
    <?php $imagePath = parse_url($sImage); ?> 
    <a href="<?php echo $this->otwImageCrop->resize($imagePath['path'], $imageLightboxWidth, $imageLightboxHeight, $this->imageCrop, $this->imageWhiteSpaces, $this->imageBackground, $imageLightboxFormat)?>" rel="otw_fslide_<?php echo $post->ID?>" title="<?php echo htmlentities($post->post_title);?>" class="otw_in_slider otw_in_slider_<?php echo intval($first_shown)?>"> 
     <img src="<?php echo $this->otwImageCrop->resize($imagePath['path'], $this->imageWidth, $this->imageHeight, $this->imageCrop, $this->imageWhiteSpaces, $this->imageBackground, $this->imageFormat)?>" alt="" /> 
    </a> 
<?php } elseif (isset($this->listOptions['image_link']) && in_array($this->listOptions['image_link'], array('single'))) { ?> 
    <?php // other logic here?> 
<?php } ?> 

使用array_values()要標準化$sliderImages的密鑰,所以它的第一個元素可以使用0作爲密鑰引用(不確定$sliderImages的密鑰是什麼樣子)。

僅供參考,請參閱:

相關問題