разные выходные данные каждые 3 столбца - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь сделать что-то вроде этого

[Col-3] [Col-3] [Col-3] [Col-3]

[Col-4][Col-4] [Col-4]

[Col-3] [Col-3] [Col-3] [Col-3]

Я продолжаю это с оператором foreach, но без удачи в данный момент.

В настоящее время я просто делаю что-то вроде этого.

$post = new mm_post();
$rows = $post->getAllPosts();
$i = 1;
foreach ($rows as $key => $row) {
  if ($i % 4 == 0) {
     echo "[Col-3] <br>";
  } else {
     echo "[Col-4] <br>";
  }
  $i++;
}

Я ищу решение и объяснение этого :) Очевидно, что он просто делаеткаждые 3 сообщения [col-3], но я хочу, чтобы получилось 4 col-3, тогда 3 col-4 - это то, что я ищу.

Поэтому я надеюсь, что вы, ребята, сможете мне помочь!:)

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Подумайте, что каждые 7 постов составляют 2 строки ... одну с 4 столбцами и одну с 3 столбцами: поэтому, когда счетчик $ i делится на 7, вы печатаете
.Затем, когда элемент строки меньше 4, напечатайте col-3 , когда 4 напечатайте col-3 , а в противном случае напечатайте col-4

    $post = new mm_post();
    $rows = $post->getAllPosts();
    $i = 1;
    $line=0;
    for($rows as $key => $row)
    {
        if($i-($line*7)<4)
            {
              echo "[col-3]";
            }
            else  if($i-($line*7)==4)
            {
                echo "[col-3]<br>";
            }
            else 
           { 
                echo "[col-4]";
           }

        if($i%7==0)
           {
               echo "<br>";
               $line++;
           }

            $i++;
    }
0 голосов
/ 08 декабря 2018
function alternate_slices($arr) {
    $slices = array();

    $start = 0;
    $length = 4;

    while ($start < count($arr)) {
        $slices[] = array_splice($arr, $start, $length);

        $length = (4 - $length + 3);
    }

    return $slices;
}

$arr = range(1, 20);
$sliced_arr = alternate_slices($arr);

<!-- print_r($sliced_arr);
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )
    [1] => Array
        (
            [0] => 5
            [1] => 6
            [2] => 7
        )
    [2] => Array
        (
            [0] => 8
            [1] => 9
            [2] => 10
            [3] => 11
        )
    [3] => Array
        (
            [0] => 12
            [1] => 13
            [2] => 14
        )
    [4] => Array
        (
            [0] => 15
            [1] => 16
            [2] => 17
            [3] => 18
        )
    [5] => Array
        (
            [0] => 19
            [1] => 20
        )
) -->

$sliced_arr = array_map(
    function ($slice) {
        return implode("||", $slice);
    },
    $sliced_arr
);

<!-- print_r($sliced_arr);
Array
(
     [0] => 1||2||3||4
     [1] => 5||6||7
     [2] => 8||9||10||11
     [3] => 12||13||14
     [4] => 15||16||17||18
     [5] => 19||20
) -->

$sliced_arr = implode("\n", $sliced_arr);

<!-- print($sliced_arr);
1||2||3||4
5||6||7
8||9||10||11
12||13||14
15||16||17||18
19||20 -->

Читайте о:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...