(PHP)随机发布的帖子在前n个帖子中有特定帖子?

时间:2014-12-18 10:03:32

标签: php random shuffle

我在一个页面上工作,使用PHP的 shuffle()函数以随机顺序显示帖子。有一个特定的标题 - 帖子,应始终在前5个帖子中弹出。可能像:

1. Post-7
2. Post-2
3. Post-1
4. Title-Post
5. Post-5
6. Post-4
7. Post-3
8. Post-6

OR

1. Post-2
2. Title-Post
3. Post-4
4. Post-6
5. Post-1
6. Post-3
7. Post-7
8. Post-5

有人可以给我一个如何实现这一目标的提示吗?谢谢!

2 个答案:

答案 0 :(得分:3)

我假设您从数据库中获取列表并且您拥有" title-post"在另一个变量中。

您可以执行以下操作:

$array = array('post-1', 'post-2', 'post-3'); //the array you should get from the DB
shuffle($array); //shuffle all
$title = 'Title-Post';

array_splice( $array, rand(0, 4), 0, $title); //insert the title somewhere between 0 and 4 so in the first 5 values

应该做的伎俩

编辑:评论

答案 1 :(得分:0)

这应该适合你:

(我只是生成一个0到4之间的随机数,如果它不是标题帖子,我把帖子放在最后并将标题贴在那个位置)

<?php

    $input = array("Post-7", "Post-2", "Post-1", "Title-Post", "Post-5", "Post-4", "Post-3", "Post-6");
    $titel = rand(0, 4);
    shuffle($input);

    if($input[$titel] != "Title-Post") {
        $input[] = $input[$titel];
        $temp = $input[array_search("Title-Post", $input)];
        unset($input[array_search("Title-Post", $input)]);
        $input[$titel] = $temp;
    }

    foreach($input as $value)
        echo $value . "<br />";

?>

可能的输出:

Post-2
Post-1
Title-Post
Post-6
Post-7
Post-5
Post-3
Post-4