2012-01-06 36 views
11

làm thế nào để hạn chế vòng lặp này ..just ngươi loops..thanks giúplàm thế nào để hạn chế vòng lặp foreach để ba vòng

<?php 
    foreach($section['Article'] as $article) : 
?> 
<tr> 
    <td> 
     <?php 
      if ($article['status'] == 1) { 
       echo $article['title']; 
      } 
     ?> 
    </td> 
    <td> 
     <?php 
      if($article['status']== 1) { 
       echo '&nbsp;'.$html->link('View', '/articles/view/'.$article['id']); 
      } 
     ?> 
    </td> 
</tr> 
<?php 
    endforeach; 
?> 
+0

nơi nào $ section [ 'Điều'] đến từ? –

+1

có thể trùng lặp với [giới hạn số lần vòng lặp chạy trong php] (http://stackoverflow.com/questions/1998204/limiting-number-of-times-a-loop-runs-in-php) –

Trả lời

23

đầu tiên, chuẩn bị dữ liệu của bạn

$i = 1; 
$data = array(); 
foreach($section['Article'] as $article) { 
    if($article['status']== 1) { 
    $article['link'] = $html->link('View', '/articles/view/'.$article['id']); 
    $data[] = $article; 
    if ($i++ == 3) break; 
    } 
} 
$section['Article'] = $data; 

sau đó hiển thị

<?php foreach($section['Article'] as $article): ?> 
<tr> 
    <td><?php echo $article['title'] ?></td> 
    <td>&nbsp;<?php echo $article['link']?></td> 
</tr> 
<?php endforeach ?> 
-3

Một vòng lặp foreach sẽ không phải là tốt nhất nếu bạn cần phải hạn chế nó. Hãy thử sử dụng vòng lặp for.

<?php 

for(i=1; i<=3; i++) 
{ 
    $article = $section['Article']; 


        ?> 
        <tr> 
         <td><?php if($article['status']== 1){echo $article['title'];} ?></td> 
         <td><?php if($article['status']== 1){echo '&nbsp;'.$html->link('View', '/articles/view/'.$article['id']);}?></td> 
        </tr> 
        <?php } ?> 

Mã này sẽ tạo vòng lặp văn bản 3 lần.

+1

ngôn ngữ nào mã là gì? –

8

này sẽ giúp đỡ nếu mảng của bạn được đánh giá theo chỉ mục

foreach($section['Article'] as $i => $article): 

    if ($i > 3) break; 

Nếu không - bằng tay tăng bộ đếm:

$i = 0; 
foreach($section['Article'] as $article): 

    if ($i++ > 3) break; 
6

Nó muốn được dễ dàng hơn để sử dụng một cho() vòng lặp để thực hiện điều này, nhưng để trả lời câu hỏi:

<? 
$i = 0; 
foreach ($section['Article'] AS $article): 
    if ($i == 3) { break; } 
?> 
... 
<? 
$i++; 
endforeach 
?> 
66

Cắt mảng.

foreach(array_slice($section['Article'], 0, 3) as $article): 
+9

+1 Đây phải là câu trả lời đúng. Nó không sử dụng nếu báo cáo, đạt được mục tiêu của nó trong một dòng và rõ ràng là cách foreach được thiết lập để xử lý vấn đề này. Vâng, ngay cả khi nó sẽ không nhận được đánh dấu chính xác, đó là một trong những tôi sẽ sử dụng. Tôi không muốn 10 dòng mã để giải quyết một vấn đề đơn giản. – gcoulby

-1

một tạo ảnh vui nhộn phải cố gắng này một

<?php $count = 0; $pages = get_pages('child_of=1119&sort_column=post_date&sort_order=desc'); foreach($pages as $page) { 
$count++; 
if ($count < 50) { // only process 10 ?> 
<div class="main_post_listing"> <a href="<?php echo get_page_link($page->ID) ?>"><?php echo $page->post_title ?></a><br /></div> 
<?php 
} } ?> 
Các vấn đề liên quan