2011-11-15 36 views
10

tôi đang kiểm tra xem một mục trong một vòng lặp là lặp thứ 3 hay không, với đoạn mã sau:php mô đun trong một vòng lặp

<?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; ?> 

Làm thế nào tôi có thể kiểm tra nếu vòng lặp là vào thứ 2 và không phải là lần lặp thứ 3 của nó?

Tôi đã thử $i % 2 == 1 không có kết quả.

Trả lời

12

kiểm tra Modulus whats còn sót lại của một bộ phận.

Nếu $ i là 10, 10/2 = 5 không còn sót lại, vì vậy $ i modulus 2 sẽ là 0.
Nếu $ i là 10, 10/3 = 3 với số dư còn lại là 1, vì vậy $ i mô đun 3 sẽ là 1.

Để giúp bạn dễ dàng theo dõi số lượng mục tôi sẽ bắt đầu $ i từ 1 thay vì 0. ví dụ

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!'; 

Hy vọng điều này dễ hiểu. Shai.

0

Tôi nghĩ rằng nó nên là:

if ($i % 2 == 0) 
0

Hãy thử điều này, nên làm việc cho mỗi lần lặp thứ 3:

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

cho mỗi lần lặp thứ ba bạn cần

if ($i % 3 === 0) 

nếu nói riêng lặp thứ ba sau đó

if ($i === 3) 
8

Bây giờ cho câu trả lời:

Làm thế nào tôi có thể kiểm tra các vòng lặp là trên nó 2 tương tác không phải là số 3 tôi đã thử,

$i % 2 === 0 
7

Khi nghi ngờ, hãy viết một 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"; 
     } 
    } 
} 

Đây là kết quả. Sử dụng số liệu này để tìm ra những gì bạn cần sử dụng:

$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

Đây là đoạn mã thực sự hữu ích! Idiots hướng dẫn - tăng '4' trong dòng đầu tiên sẽ sản xuất nhiều vòng hơn với khoảng trống lớn hơn trước khi lặp lại. – phil

Các vấn đề liên quan