2012-01-06 19 views
11

jak ograniczyć tę pętlę ..just ciebie loops..thanks za pomocjak ograniczyć do trzech pętli foreach pętli

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

skąd $ sekcja [ 'artykułu'] pochodzić z? –

+1

możliwy duplikat [ograniczenie liczby uruchomień pętli w php] (http://stackoverflow.com/questions/1998204/limiting-number-of-times-a-loop-runs-in-php) –

Odpowiedz

23

pierwsze, należy przygotować dane

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

następnie wyświetlić go

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

pętli foreach nie byłoby najlepiej, jeśli trzeba je ograniczyć. Spróbuj użyć pętli 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 } ?> 

Ten kod spowoduje, że tekst zostanie wyświetlony 3 razy.

+1

który język to kod to? –

8

to pomoże, jeśli tablica jest indeksowana numerycznie

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

    if ($i > 3) break; 

Inaczej - ręcznie zwiększamy licznik:

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

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

Byłoby łatwiej używać do() pętlę, aby to zrobić, ale aby odpowiedzieć na pytanie:

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

Pokrój tablicę.

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

+1 To powinna być poprawna odpowiedź. Nie używa instrukcji, osiąga swój cel w jednej linii i jest oczywiście sposobem, w jaki konfiguruje się foreach, aby poradzić sobie z tym problemem. Cóż, nawet jeśli nie będzie to oznaczało, że jest poprawna, to ta, której użyję. Nie chcę, aby 10 linii kodu radziło sobie z prostym problemem. – gcoulby

-1

Niesamowite trzeba próbować ten jeden

<?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 
} } ?> 
Powiązane problemy