2015-08-31 32 views
0

當達到某個條件時可以控制for-loop嗎?控制for-loop輸出

說明:

我檢索的文件夾路徑,以從數據庫中的圖像的集合:這些圖像然後通過一個for循環打印出來。我需要做的是控制這些圖像在頁面上的顯示方式(比如每行5個圖像)。 截至目前,for循環在單行中打印40個圖像,這會讓您滾動到頁面的最右側。

是否有解決方案來控制for循環,例如,5次成功循環後,回顯出< br>?這裏是一個庸俗的想法:

for ($i = 1; $i < $rows; $i++) { 
$path = $image[$i]; 
$folder_path = $path['folder_path']; //since it's an array 
echo '<img src="' . $folder_path . '">'; 

//pseudocode 
if ($i == 5) { 
echo '<br>'; 
...continue with the loop 
} 
} 

我知道僞看起來很瘋狂,但是這幾乎是什麼,我需要做的:迴路實例的X適量,加一些東西,然後繼續。

+3

使用模運算符,如'$ i%5 == 0'在每次迭代中執行一次操作。 – m69

回答

1

相同的循環。插入
的條件是($ i%5 == 0),這意味着(如果這個元素是他的系列中的第五個)對你有用。

<?php 
for ($i = 1; $i < $rows; $i++) { 
    $path = $image[$i]; 
    $folder_path = $path['folder_path']; 
    echo '<img src="' . $folder_path . '">'; 

    if ($i % 5 == 0) { 
    echo '<br>'; 
    } 
} 
+0

請解釋一下你在代碼中做什麼。 –

1

按@ M69的評論,最好的辦法是使用%(模數)比較操作。如PHP docs所解釋:

$ a%$ b返回$ a除以$ b的餘數。

所以,你的情況:

for ($i = 0; $i < $rows; $i++) { 

    $path = $image[$i]; 
    $folder_path = $path['folder_path']; //since it's an array 
    echo '<img src="' . $folder_path . '">'; 

    if ($i % 5 == 0) { //do this if $i divided by 5 has a remainder of 0 
     echo '<br>'; 
    } 

} 

作爲一個側面說明,你應該在你的for循環中,假設$rows被設定爲從返回的行號碼的開頭設定$i 0您查詢。將它設置爲1將防止迭代通過最後一行,因爲$i== 40(假設40行),因此將不會是< 40

+0

這裏模量的作用是在回顯圖像之前添加< br >,並且結果保持不變:圖像打印在單行中,但由於使用了模數,所以圖像被壓下。看起來,在迴應數組中,圖像被視爲一個元素。我試着用foreach,但得到了同樣的結果。使用fetchAll()檢索文件夾路徑,然後將相關數組的位置存儲在var中。我用css解決了這個問題(添加了一個類和float:left)。我也刪除了包裹img的< td >,現在它工作。 –

+0

如果你已經解決了這個問題,並且這些答案都不能完全回答你的問題,請:1)發佈你自己的答案並接受它作爲最佳答案,或者2)考慮從SO中刪除你的問題。 – kittykittybangbang

+0

我無法刪除它,因爲線程有答案。我標記了刪除問題。即使我解決了我的問題,但我的解決方案並沒有回答這個問題:即分離圖像(與< br >和for-loop一樣)。我測試了這個字符串,它的工作方式就像你們說的那樣。它似乎不適用於它從文件夾中迴應的圖像。 –