我在一个页面上工作,使用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
有人可以给我一个如何实现这一目标的提示吗?谢谢!
答案 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