2013-05-30 68 views
0

我有一個工作的PHP腳本,我需要soem幫助修改。如何將if語句添加到for循環?

這裏是我的腳本:

<? $images = $product->images; 
for ($i = 4; $i <= 8; $i++): ?> 
<li> 
<a href='<?= $images[$i]->getThumbnailPath(0,0) ?>' class="swatch_lbox_gallery" rel="gal"> 
<img src="<?= $images[$i]->getThumbnailPath(138, 0) ?>"/> 
</a> 
<p><?= $images[$i]->title ?><br/> 
<?= $images[$i]->description ?></p> 
</li> 
<? endfor; ?> 

它當有4+圖像的工作,否則我得到一個錯誤。我試圖添加一個if語句,所以它隱藏瞭如果沒有第四個圖像,但我不能讓它工作。 任何幫助將不勝感激。請讓我知道是否需要添加更多細節。

添加的細節 - 我開始在4,因爲我需要的圖像4-8

謝謝!

斯蒂芬

+0

你得到了什麼錯誤??你爲什麼要初始化$ i = 4的值在循環中? –

+0

你用'$ i = 0; $ i <= 8; $ i ++'爲什麼你用'$ i = 4'循環開始# – sAnS

+0

關於Barmar's'的回答,如果你的文件夾中只有4張圖片,那麼你的'$ i = 4;'在技術上是行不通的。你有沒有測試只有4張圖片?邏輯上,'4'實際上意味着'5'。 ;-) –

回答

2
if (count($images) >= 4) for ($i = 4; $i <= 8; $i++): 
1

嘗試這種情況:

<? 
    $images = $product->images; 
    $startOnImage = 4; 
    $endOnImage = 8; 

    foreach($images as $key => $image) 
    { 
     if($key<$startOnImage){ continue; } 
     if($key>$endOnImage){ break; } 

     echo '<li>'; 
     echo '<a href="' . $image->getThumbnailPath(0,0) . '" class="swatch_lbox_gallery" rel="gal">'; 
     echo '<img src="' . $image->getThumbnailPath(138, 0) . '"/>'; 
     echo '</a>'; 

     echo '<p>' . $image->title . '<br/>'; 
     echo $image->description . '</p>'; 
     echo '</li>'; 

    } 
+1

更好的編輯:)! +1 Infact - 更改'$ image [$ key]',應該是'$ image-> title'或'$ images [$ key]' – Farkie

+0

@Farkie +1,謝謝指出!我的錯誤應該看到它! –

+0

這將顯示所有圖像。看起來他想在#4開始。 – Barmar

0
for ($i = 4; $i <= min(8, count($images)-1); $i++) : 

-1是必要的,因爲數字數組索引從0開始,而不是1。所以$images[4]要求count($images)是至少5。

+0

大家好,非常感謝您的幫助! 從技術上講,伽馬格和菲爾克羅斯的建議都有效,所以兩者都是正確的。 我將首先使用Gamag's,並在客戶批准之前選擇「正確」的答案。 我希望能爲你效勞,非常感謝你! – StephanieF

+0

@Stephanie'Barmar'在數組數組索引thingy上有一個點。 Gawd,我已經忘記了。看看'年齡'是什麼?提示:不要「老」。 –