Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 04/01/14 в 16:06 |
вот пример:
нужно в местах, где маленькие квадратные изображения, выводить рандомно новые изображения при обновлении страницы или повторном заходе.
Как лучше это сделать?
Написать функцию на пхп и в шаблоне потом прописать в каждом месте где нужен вывод
или можно как то проще?
Все картинки будут в одной директории и одинакового размераю.
|
|
|
|
С нами с 03.01.14
Сообщения: 16
Рейтинг: 22
|
Добавлено: 05/01/14 в 11:41 |
Я бы сделала так
В шаблоне выводимой страницы поставила макросы:
Для маленьких #rnd_image_200x200_1#, #rnd_image_200x200_2# ...
И перед отдачей страницы
проводить вставку туда картинок
И далее
Код: [развернуть] |
<?php
shuffle ($small_images); //Перемешаем массив пикс
$s = 1;
foreach ($small_images as $small_image_name);
{
$templete_source = str_replace ("#rnd_image_200x200_".$s."#",$small_image_name,$templete_source);
$s++;
}
echo $templete_source;
?>
|
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 05/01/14 в 15:54 |
смысл понял, спасибо!
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 08/01/14 в 12:26 |
решил все же сделать так:
Код: [развернуть] | <?php
$arr = glob("images/*.jpg");
shuffle($arr);
echo "<img src=".$arr[0].">";
?> |
Хоть и придется вставить
с изменением ключа в места, где требуется вывод изображения, но в данном случае, как мне кажется на большом потоке посетителей будет не существенная нагрузка, в отличии от str_replace();
|
|
|
|
С нами с 28.10.10
Сообщения: 107
Рейтинг: 78
|
Добавлено: 08/01/14 в 13:31 |
Если не секрет, можно узнать откуда сей скриншот?!
|
|
Astro Dollars - гренни, матюры; минималка $50 (Paxum, Bitcoin, WMZ), комиссия 0
|
1
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 08/01/14 в 14:25 |
Lexikon: ну а shuffle зачем? чтоб выбрать одно рандомное значение ты лопатишь весь массив. не очень. $arr[array_rand($arr)] тебе в помощь. array_rand возвращает случайный _индекс_ массива. и не надо шафлить то, что не будешь юзать...
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 08/01/14 в 23:14 |
AWD писал: | Lexikon: ну а shuffle зачем? чтоб выбрать одно рандомное значение ты лопатишь весь массив. не очень. $arr[array_rand($arr)] тебе в помощь. array_rand возвращает случайный _индекс_ массива. и не надо шафлить то, что не будешь юзать... |
я тоже так думал, но проблема рандома такова, что у меня к примеру 150 картинок, а выводить нужно 50 (НЕ ОДНУ), огромная вероятность того что рандом будет выводить на морду несколько одинаковых тумб.
Последний раз редактировалось: Lexikon (08/01/14 в 23:17), всего редактировалось 1 раз
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 08/01/14 в 23:15 |
Astro$ писал: | Если не секрет, можно узнать откуда сей скриншот?! |
это один из макетов на psdmania.ru
я просто делаю свое, а это очень схоже для примера.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 08/01/14 в 23:17 |
копия
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 09/01/14 в 09:34 |
Lexikon писал: | я тоже так думал, но проблема рандома такова, что у меня к примеру 150 картинок, а выводить нужно 50 (НЕ ОДНУ), огромная вероятность того что рандом будет выводить на морду несколько одинаковых тумб. |
ну превед. array_rand может еще принимать аргумент - кол-во рандомчиков. и я очень сомневаюсь, что будут повторы.
"Использование array_rand() предпочтительно, если вам нужно выбрать одно или несколько случайных значений из массива."
дело, конечно, хозяйское...
|
|
|
|
С нами с 19.04.05
Сообщения: 1577
Рейтинг: 957
|
Добавлено: 09/01/14 в 10:58 |
AWD: - как я понимаю Lexikon использует shuffle для единственного перемешивания и потом идёт уже по индексам массива, в результате значения индексов не повторяются из за линейного обхода массива.
В случае же применения array_rand
Допустим
Код: [развернуть] |
<?php
$symbols = array ('1','2','3','4','5','6','7','8','9');
foreach ($symbols as $count)
{
echo array_rand($symbols);
}
?>
|
Сделал 3 запуска - выпадение одних и тех же значение присутствует.
556777001
475644662
733212372
Хотя может я что то не понял
|
|
Link Trade - блоги в Art,Comics,Hentai,3D и тп - 338198557
|
9
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 09/01/14 в 12:59 |
да, ты прав, ты чё-то не понял. я говорю об втором аргументе array_rand
проверять не буду, лениво, включу препроцессор в башке:
$symbols = array('1','2','3','4','5','6','7','8','9');
$keys = array_rand($symbols, 5); //дергаем 5 рандомных ключей
foreach($keys as $val)
echo $symbols[$val];
вот и все. найдешь совпадения - перепрошью себе моск.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/01/14 в 13:49 |
Да, в таком варианте повторов не будет, но как вставить все это в определенные места?
Придется вернуться к шаблону? Но тогда там будет сново поиск и замена.
или я тут что то упоскаю?
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/01/14 в 13:54 |
или вот так:
Код: [развернуть] |
<?php
$symbols = array('1','2','3','4','5','6','7','8','9');
$keys = array_rand($symbols, 5);
echo $symbols[$keys[1]];
echo $symbols[$keys[2]];
echo $symbols[$keys[3]];
echo $symbols[$keys[4]];
?>
|
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 09/01/14 в 14:03 |
ну ты странный. а с шафлом как хотел?
только не забудь, индексация с 0 начинается.
$symbols[$key[0]] ну и дальше... до 4-х надеюсь, вопросов не будет "а если нужно 6 картинок"...
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/01/14 в 14:39 |
да, я просто там в первой строке с 1-цы начал
Оффтопик: да, кстати, а если 7 с 6-тью понятно, и картинки их где брать?
Спасибо!
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 09/01/14 в 15:07 |
век живи, век учись. жаль, многие это забыли, а еще больше забили...
всегда пожалуйста
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 09/01/14 в 15:56 |
Если кому-то интересно, то на массивах до 10к shuffle в 3 раза быстрее array_rand, если выбирать больше половины массива.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/01/14 в 17:21 |
у меня 150 тумб и их кол-во врят ли будет даже 500
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 09/01/14 в 20:45 |
del
Последний раз редактировалось: AWD (10/01/14 в 11:12), всего редактировалось 1 раз
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 09/01/14 в 21:00 |
AWD писал: | сначала был большой взрыв, |
В начале было Слово.
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 09/01/14 в 21:02 |
del
|
|
|
|