如何实现组合两个项目列表的棋盘图案

时间:2017-01-29 09:42:59

标签: php algorithm laravel sorting data-structures

我有用户和帖子,我希望在网页上以棋盘图案显示它们,如下所示(其中P是Post,U是User):

P - U - P - U

U - P - U - P

P - U - P - U

U - P - U - P

无论哪一项是第4行中的第4行,都会重复作为下一行的第1行。

我将首先获得所有帖子的列表以及所有用户的列表。然后我将它们组合成一个更大的列表并应用了排序。

我已经用PHP编写了这个,但我现在的代码轮流转发P U P U:

P - U - P - U

P - U - P - U

P - U - P - U

P - U - P - U

这是我的代码:

    $posts = Post::all()
    $users = User::all()

    $tiles = collect();

    foreach ($posts as $post) {
        $tiles->push($post);
        if ($users) {
            $tiles->push($users->pop());
        }
    }

我正在寻找一种获得棋盘格模式的有效方法,我一直在尝试使用计数器并在计数器%4 == 0时一次添加两个帖子或用户,但没有结论。

1 个答案:

答案 0 :(得分:0)

对不起,我无法读取php ...但从逻辑上讲,你需要推送用户"之前"发布"在偶数线上。所以伪代码会像:

if (lineno % 2 == 0) {
  push user; push post;}
else {
  push post; push user;}