(PHP) случайный пост с определенным постом в первых n постах?

Я работаю над страницей, отображая сообщения в произвольном порядке с помощью PHP перетасовать () функция. Там один конкретный Титульный сообщение который всегда должен появляться в первых 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

ИЛИ ЖЕ

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

Может ли кто-нибудь дать мне подсказку о том, как этого добиться? Спасибо!

-1

Решение

Я предполагаю, что вы получаете список из базы данных, и у вас есть «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

Это должно делать свое дело

РЕДАКТИРОВАТЬ: комментарии

3

Другие решения

Это должно работать для вас:

(Я просто генерирую случайное число от 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
0

По вопросам рекламы [email protected]