Вывод картинок на странице без повторов

12
J
На сайте с 06.07.2011
Offline
160
960

На сайте есть база из картинок 1-30000.jpg

Скажите пожалуйста, каким скриптом можно в рэндомном порядке выводить 200 картинок без повторов.

LEOnidUKG
На сайте с 25.11.2006
Offline
1731
#1

<?

$filename=range(1, 30000);

shuffle($filename);

$filename=array_slice($filename,0,200);

foreach ($filename as $n)

{

echo $n.'.jpg';

}

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
J
На сайте с 06.07.2011
Offline
160
#2
LEOnidUKG:
<?
$filename=range(1, 30000);
shuffle($filename);
$filename=array_slice($filename,0,200);
foreach ($filename as $n)
{
echo $n.'.jpg';
}

Большое спасибо, но не совсем понял, как выводить контент и где прописывать путь до картинок.

LEOnidUKG
На сайте с 25.11.2006
Offline
1731
#3

выводить контент в этом месте:

echo $n.'.jpg';

А где и как его нужно выводить это вы должны делать.

[Удален]
#4

вместо

echo $n.'.jpg';

echo '<img src="folder_to_images/' .$n. '.jpg" alt="картинка номер ' .$n. '">';

J
На сайте с 06.07.2011
Offline
160
#5
LEOnidUKG:
выводить контент в этом месте:
echo $n.'.jpg';

А где и как его нужно выводить это вы должны делать.



---------- Post added 19-06-2015 at 12:43 ----------

web2033:
вместо
echo $n.'.jpg';

echo '<img src="folder_to_images/' .$n. '.jpg" alt="картинка номер ' .$n. '">';

Большое спасибо!

J
На сайте с 06.07.2011
Offline
160
#6
web2033:
вместо
echo $n.'.jpg';

echo '<img src="folder_to_images/' .$n. '.jpg" alt="картинка номер ' .$n. '">';


<?
$filename=range(1, 10);
shuffle($filename);
$filename=array_slice($filename,0,10);
foreach ($filename as $n)
?>

<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>

Протестировал, что-то не так, выводит только 10 одинаковых картинок, а не рэндомно 10 без повторов.

---------- Post added 19-06-2015 at 21:36 ----------

LEOnidUKG:
<?
$filename=range(1, 30000);
shuffle($filename);
$filename=array_slice($filename,0,200);
foreach ($filename as $n)
{
echo $n.'.jpg';
}

Скрипт не так работает, выводит 10 одинаковых картинок.


<?
$filename=range(1, 10);
shuffle($filename);
$filename=array_slice($filename,0,10);
foreach ($filename as $n)
?>

<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
<? echo '<img src="pics/' .$n. '.jpg" alt="pics ' .$n. '">'; ?>
PN
На сайте с 22.08.2012
Offline
103
#7

а почему он должен выводить 10 разных, если вы берете одно и то же значение $n?

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
LEOnidUKG
На сайте с 25.11.2006
Offline
1731
#8

ТС, вы просто не программист вот и всё. У вас ничего не будет работать. Я вам написал полностью рабочий код, далее даже ещё за вас про картинку дали. А вы чушь какую-то пишите.

Mad_Man
На сайте с 10.11.2008
Offline
162
#9
LEOnidUKG:
<?
$filename=range(1, 30000);
shuffle($filename);
$filename=array_slice($filename,0,200);
foreach ($filename as $n)
{
echo $n.'.jpg';
}

Оператива будет быстро выжираться при росте количества изображений. Есть вариант с просадкой по камню, а не по мозгу:


function rand_unique($min, $max, $count)
{
$result = [];

while (count($result) < $count)
{
$result[] = mt_rand($min, $max);

$result = array_unique($result);
}

return $result;
}


$numbers = rand_unique(1, 30000, 200);

Ну и тоже самое, но только с оптимизацией:


public static function rand_unique($min, $max, $count)
{
$result = [];

for ($i = 0; $i < $count; $i++)
{
$result[] = mt_rand($min, $max);
}

$result = array_unique($result);

while (count($result) < $count)
{
$number = mt_rand($min, $max);

if (!in_array($number, $result))
{
$result[] = $number;
}
}

return $result;
}
J
На сайте с 06.07.2011
Offline
160
#10
proksey-net:
а почему он должен выводить 10 разных, если вы берете одно и то же значение $n?

А как будет правильно указать разные значения $n?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий