2016-11-30 2 views
2

Я извлекаю свои объекты из Exact и отображаю их, используя цикл PHP. Тем не менее, я хочу поместить HTML-тег (br) после каждых 3 элементов.PHP - цикл Foreach, который ограничивает 3 элемента каждой строки

Есть ли возможность сделать это? Мой текущий код:

<?php 
    $glas = getGLAccounts($search); 
    $count = 0 

    foreach($glas as $gla) { 
     $count++; 
     echo "<tr><td><a href='glaccountedit.php?glaccount=".$gla['ID']."'>".$gla['Code']." </a></td><td>&nbsp;&nbsp;&nbsp;".$gla['Description']."</td></tr>"; 

     if ($count == 3) { 
      echo "</br>"; 
     } 
    } 
?> 

Однако, это не работает. Что я делаю не так?

+1

http://stackoverflow.com/questions/9992396/how-to- define-html-tag-after-each-5-iteration-in-foreach-loop – AddcitedToLearn

+1

'if ($ count% 3 == 0)' Использовать оператор modulo. – nicovank

+0

Вам необходимо сбросить счетчик, чтобы начать с нуля – RST

ответ

0

Это не работает, потому что ваш счетчик не сбрасывается. Если count == 3, он будет делать <br>, но после этого счет снова увеличивается. Так count будет 4, 5, 6, 7, и т.д., и никогда быть true для count == 3

<?php 
$glas = getGLAccounts($search); 
$count = 0 

foreach($glas as $gla) { 
    $count++; 
    echo "<tr><td><a href='glaccountedit.php?glaccount=".$gla['ID']."'>".$gla['Code']." </a></td><td>&nbsp;&nbsp;&nbsp;".$gla['Description']."</td></tr>"; 
    if ($count == 3) { 
     $count = 0; 
     echo "</br>"; 
    } 
} 
?> 
3

Вашего кода поставит <br> только один раз. Если вам нужно поставить после каждых трех элементов, которые необходимо сбросить переменную:

if ($count == 3) { 
    $count = 0; 
    echo "</br>"; 
} 

или изменить состояние:

if ($count%3 === 0) { 
    echo "</br>"; 
} 
Смежные вопросы