每三列输出不同

时间:2018-12-08 10:22:44

标签: php loops foreach

我试图做的就是这样

[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 :(得分:1)

想想每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++;
    }

答案 1 :(得分:0)

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

了解以下信息: