2011-11-15 11 views
10

Attualmente sto controllando se una voce in un ciclo è la terza iterazione o no, con il seguente codice:php modulo in un ciclo

<?php for ($i = 0; $i < count($category_news); $i++) : ?> 
     <div class="grid_8"> 
      <div class="candidate snippet <?php if ($i % 3 == 2) echo "end"; ?>"> 
       <div class="image shadow_50"> 
        <img src="<?php echo base_url();?>media/uploads/news/<?php echo $category_news[$i]['url']; ?>" alt="Image Preview" width="70px" height="70px"/> 
       </div> 
       <h5><?php echo $category_news[$i]['title']?></h5> 
       <p><?php echo strip_tags(word_limiter($category_news[$i]['article'], 15)); ?></p> 
       <?php echo anchor('/news/article/id/'.$category_news[$i]['news_id'], '&gt;&gt;', array('class' => 'forward')); ?> 
      </div> 
     </div> 
    <?php if ($i % 3 == 2) : ?> 
     </li><li class="row"> 
    <?php endif; ?> 
<?php endfor; ?> 

Come posso verificare se il ciclo è il suo 2 ° e non è la sua terza iterazione?

Ho provato $i % 2 == 1 inutilmente.

risposta

12

controlli Modulus che cosa è il residuo di una divisione.

Se $ i è 10, 10/2 = 5 senza avanzi, quindi $ i modulo 2 sarebbe 0.
Se $ i è 10, 10/3 = 3 con un avanzo di 1, quindi $ i modulo 3 sarebbe 1.

Per semplificare il monitoraggio del numero di elementi, inizierei $ i da 1 invece di 0. es.

for($i=1; $i <= $count; $i++) 
    if($i % 2 == 0) echo 'This number is even as it is divisible by 2 with no leftovers! Horray!'; 

Spero che sia comprensibile. Shai.

0

penso che dovrebbe essere:

if ($i % 2 == 0) 
0

Prova questa, dovrebbe funzionare per ogni 3 iterazione:

if ($i % 3 === 0) 
1

per ogni terza iterazione è necessario

if ($i % 3 === 0) 

se particolare terza iterazione poi

if ($i === 3) 
8

Ora per la risposta:

Come posso controllare il ciclo è sul suo 2 ° interation non è il 3 ° ho provato,

$i % 2 === 0 
7

In caso di dubbio, scrivere la snippet of code:

for ($j = 1; $j < 4; $j++) 
{ 
    for ($k = 0; $k < $j; $k++) 
    { 
     echo "\n\$i % $j == $k: \n"; 

     for ($i = 0; $i < 10; $i++) 
     { 
     echo "$i : "; 
     if ($i % $j == $k) 
     { 
      echo "TRUE"; 
     } 
     echo " \n"; 
     } 
    } 
} 

Ecco l'output. Usalo per capire che cosa è necessario utilizzare:

$i % 1 == 0: 
0 : TRUE 
1 : TRUE 
2 : TRUE 
3 : TRUE 
4 : TRUE 
5 : TRUE 
6 : TRUE 
7 : TRUE 
8 : TRUE 
9 : TRUE 

$i % 2 == 0: 
0 : TRUE 
1 : 
2 : TRUE 
3 : 
4 : TRUE 
5 : 
6 : TRUE 
7 : 
8 : TRUE 
9 : 

$i % 2 == 1: 
0 : 
1 : TRUE 
2 : 
3 : TRUE 
4 : 
5 : TRUE 
6 : 
7 : TRUE 
8 : 
9 : TRUE 

$i % 3 == 0: 
0 : TRUE 
1 : 
2 : 
3 : TRUE 
4 : 
5 : 
6 : TRUE 
7 : 
8 : 
9 : TRUE 

$i % 3 == 1: 
0 : 
1 : TRUE 
2 : 
3 : 
4 : TRUE 
5 : 
6 : 
7 : TRUE 
8 : 
9 : 

$i % 3 == 2: 
0 : 
1 : 
2 : TRUE 
3 : 
4 : 
5 : TRUE 
6 : 
7 : 
8 : TRUE 
9 : 
+1

Questo è uno snippet veramente utile! Guida degli idioti: aumentando il "4" nella prima riga si generano più anelli con spazi più grandi prima di ripetere. – phil