Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Как лучше реализовать?
Новая тема
Ответить
цитата
04/01/14 в 16:06
Lexikon
вот пример:
нужно в местах, где маленькие квадратные изображения, выводить рандомно новые изображения при обновлении страницы или повторном заходе.
Как лучше это сделать?
Написать функцию на пхп и в шаблоне потом прописать в каждом месте где нужен вывод
<?php echo $myFunction(); ?>
или можно как то проще?
Все картинки будут в одной директории и одинакового размераю.
цитата
05/01/14 в 11:41
Aleksia
Я бы сделала так
В шаблоне выводимой страницы поставила макросы:
Для маленьких #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;
?>
цитата
05/01/14 в 15:54
Lexikon
смысл понял, спасибо!
цитата
08/01/14 в 12:26
Lexikon
решил все же сделать так:
<?php
$arr = glob("images/*.jpg");
shuffle($arr);
echo "<img src=".$arr[0].">";
?>
Хоть и придется вставить
echo "<img src=".$arr[0].">";
с изменением ключа в места, где требуется вывод изображения, но в данном случае, как мне кажется на большом потоке посетителей будет не существенная нагрузка, в отличии от str_replace();
цитата
08/01/14 в 13:31
Astro$
Если не секрет, можно узнать откуда сей скриншот?!
цитата
08/01/14 в 14:25
AWD
Lexikon:
ну а shuffle зачем? чтоб выбрать одно рандомное значение ты лопатишь весь массив. не очень. $arr[array_rand($arr)] тебе в помощь. array_rand возвращает случайный _индекс_ массива. и не надо шафлить то, что не будешь юзать...
цитата
08/01/14 в 23:14
Lexikon
AWD писал:
Lexikon:
ну а shuffle зачем? чтоб выбрать одно рандомное значение ты лопатишь весь массив. не очень. $arr[array_rand($arr)] тебе в помощь. array_rand возвращает случайный _индекс_ массива. и не надо шафлить то, что не будешь юзать...
я тоже так думал, но проблема рандома такова, что у меня к примеру 150 картинок, а выводить нужно 50 (НЕ ОДНУ), огромная вероятность того что рандом будет выводить на морду несколько одинаковых тумб.
Последний раз редактировалось: Lexikon (
08/01/14 в 23:17
), всего редактировалось 1 раз
цитата
08/01/14 в 23:15
Lexikon
Astro$ писал:
Если не секрет, можно узнать откуда сей скриншот?!
это один из макетов на psdmania.ru
я просто делаю свое, а это очень схоже для примера.
цитата
08/01/14 в 23:17
Lexikon
копия
цитата
09/01/14 в 09:34
AWD
Lexikon писал:
я тоже так думал, но проблема рандома такова, что у меня к примеру 150 картинок, а выводить нужно 50 (НЕ ОДНУ), огромная вероятность того что рандом будет выводить на морду несколько одинаковых тумб.
ну превед. array_rand может еще принимать аргумент - кол-во рандомчиков. и я очень сомневаюсь, что будут повторы.
"Использование array_rand() предпочтительно, если вам нужно выбрать одно или несколько случайных значений из массива."
дело, конечно, хозяйское...
цитата
09/01/14 в 10:58
Retox
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
Хотя может я что то не понял
цитата
09/01/14 в 12:59
AWD
да, ты прав, ты чё-то не понял. я говорю об втором аргументе 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];
вот и все. найдешь совпадения - перепрошью себе моск.
цитата
09/01/14 в 13:49
Lexikon
Да, в таком варианте повторов не будет, но как вставить все это в определенные места?
Придется вернуться к шаблону? Но тогда там будет сново поиск и замена.
или я тут что то упоскаю?
цитата
09/01/14 в 13:54
Lexikon
или вот так:
<?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]];
?>
цитата
09/01/14 в 14:03
AWD
ну ты странный. а с шафлом как хотел?
только не забудь, индексация с 0 начинается.
$symbols[$key[0]] ну и дальше... до 4-х
надеюсь, вопросов не будет "а если нужно 6 картинок"...
цитата
09/01/14 в 14:39
Lexikon
да, я просто там в первой строке с 1-цы начал
Оффтопик:
да, кстати, а если 7 с 6-тью понятно, и картинки их где брать?
Спасибо!
цитата
09/01/14 в 15:07
AWD
век живи, век учись. жаль, многие это забыли, а еще больше забили...
всегда пожалуйста
цитата
09/01/14 в 15:56
Yacc
Если кому-то интересно, то на массивах до 10к shuffle в 3 раза быстрее array_rand, если выбирать больше половины массива.
цитата
09/01/14 в 17:21
Lexikon
у меня 150 тумб
и их кол-во врят ли будет даже 500
цитата
09/01/14 в 20:45
AWD
del
Последний раз редактировалось: AWD (
10/01/14 в 11:12
), всего редактировалось 1 раз
цитата
09/01/14 в 21:00
Yacc
AWD писал:
сначала был большой взрыв,
В начале было Слово.
цитата
09/01/14 в 21:02
AWD
del
Новая тема
Ответить
Эта страница в полной версии