2012-07-10 36 views
1

在for循環中,我需要添加一些HTML,僅當循環在[[(3的倍數)減1]時輸出。PHP如果是一個整數的倍數

例如,我可以做的是:

for($i=0; $i<count($imagearray); $i++) 
{ 
    if($i=="0" || $i=="2" || $i=="5" || $i=="8" || $i=="11") 
    { 
     echo 'string'; 
    } 
} 

但心不是非常優雅,非常無用的大for循環,有沒有辦法做到這一點正確的方法是什麼?

+1

你爲什麼要比較字符串? 0? – 2012-07-10 17:23:11

回答

6
if ($i==0 || ($i+1)%3 == 0) 
{ 
    //do stuff 
} 

這將做什麼,是去下一個指數,除以3,看看是否有餘數。如果沒有,則這意味着當前的指數大於一個數字,是被3整除

+0

'$ i = 0'的情況如何? – Engineer 2012-07-10 17:26:34

+0

0不符合可以被3整除的數字的條件。但如果需要添加,這是一個簡單的'if($ i == 0 || ...' – JoeCortopassi 2012-07-10 17:31:14

+1

我剛剛添加$ i == 0爲0添加,謝謝你的答案喬。可以,還沒有 – JimmyBanks 2012-07-10 17:32:00

0

使用the modulus operator

if (! (($i+1) % 3)) { 

如果$i+1分爲3,沒有餘數,則結果爲零。那麼你只需要一個布爾型而不是

如果你想匹配0(因爲你在你的例子中使用它,但它不符合你的描述),那麼你將不得不特殊情況下與||

+1

爲什麼你會選擇比較運算符?我真誠地懷疑它會更快,並且肯定會在正常邏輯中使用非邏輯的情況下會變得更加混亂。 – VoronoiPotato 2012-07-10 17:28:23

0

您要使用的模:

(1 % 3) == 1 
(2 % 3) == 2 
(3 % 3) == 0 
(4 % 3) == 1 

好運

模是同樣的事情的話,給我一個除法的餘數。所以1/3等於0餘數1,依此類推。

0
if(($i+1)%3 == 0){ 
    //do something 
} 

%運算符被稱爲模數運算符,並返回一個除法的餘數少一個。

0

最高貴的方法是這樣

if ($i % 3 === 2) { 
    //do stuff 
} 

,因爲它不添加東西到$i值,但所有的答案都基本上是正確的!

+0

我想這是用來創建三列圖像的佈局,如果是這樣的話,請記住,如果您的網站在不同的屏幕上查看,圖像可能會出現不同,並且您不應該使用PHP來製作佈局決策,因爲多屏幕問題。JavaScript/CSS最好能安排你的內容。 – 2012-07-10 17:31:43