Foreach и nth условия

0

Я пытаюсь распечатать контент на три столбца, что означает для первого столбца мне нужно получить записи, соответствующие термину 3n-2. Как я могу это сделать... используя модуль? Спасибо!

foreach($grid as $tile):
    echo '<div class="tile"><img src="/media/full/' . $tile['source'] . '"/></div>';
endforeach;
  • 0
    Что вы имеете в виду: term 3n-2 ?
  • 0
    Было бы полезно узнать больше о HTML / CSS.
Показать ещё 5 комментариев
Теги:

4 ответа

4
Лучший ответ

Я думаю, что вы ищете просто дополнительный счетчик:

$i=0;
foreach($grid as $tile) {
    if($i++ % 3 == 0) {
        //do something every 3rd time
    }
    //do something every time
}
  • 2
    Увеличьте это где-нибудь).
  • 1
    добавить $i++ в цикле.
Показать ещё 4 комментария
1

Я думаю, вы ищете что-то вроде этого:

(Пример кода, просто измените $arr на $grid)

<?php

    $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

    for($count = 0; $count < count($arr); $count++) {

        if($count % 3 == 0 && $count != 0)
            echo "<br />";
        echo    $arr[$count];

    }


?>

Вывод:

123
456
789

Или, если вам нужны столбцы в отдельных массивах:

<?php

    $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
    $columnOne = array();
    $columnTwo = array();
    $columnThree = array();

    for($count = 0; $count < count($arr); $count++) {

        if($count % 3 == 0)
            $columnOne[] = $arr[$count];
        elseif($count % 3 == 1)
            $columnTwo[] = $arr[$count];
        else
            $columnThree[] = $arr[$count];

    }

    print_r($columnOne);
    print_r($columnTwo);
    print_r($columnThree);

?>

Вывод:

Array ( [0] => 1 [1] => 4 [2] => 7 )
Array ( [0] => 2 [1] => 5 [2] => 8 )
Array ( [0] => 3 [1] => 6 [2] => 9 )
0

foreach также может дать вам индекс и, как вы уже сказали, вы можете выбрать нужные строки с помощью IF или вы можете сделать отрицательный IF и использовать continue; пропустить то, что вы не хотите.

foreach($grid as $i => $tile):
    if ($i % 3 == 2):
0

Да, я бы использовал modp php operator %, если бы правильно понял, что вы имеете в виду:

<?php
  $grid = array(1,2,3,4,5,6,7); # just for testing

  $n = 1;
  foreach($grid as $tile) {
    if (($n + 2) % 3 == 0) {
      #echo '<div class="tile"><img src="/media/full/' . $tile['source'] . '"/></div>';
      echo "$n\n"; # just for testing
    }
    $n++;
  }
?>

Что производит:

$ php x.php 
1
4
7

Ещё вопросы

Сообщество Overcoder
Наверх
Меню