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
смысл понял, спасибо! icon_wink.gif
цитата
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
Хотя может я что то не понял icon_wink.gif
цитата
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];
вот и все. найдешь совпадения - перепрошью себе моск. smail101.gif
цитата
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-х smail101.gif надеюсь, вопросов не будет "а если нужно 6 картинок"... smail101.gif
цитата
09/01/14 в 14:39
 Lexikon
да, я просто там в первой строке с 1-цы начал
Оффтопик: да, кстати, а если 7 с 6-тью понятно, и картинки их где брать? trollface.png smail101.gif

Спасибо!
цитата
09/01/14 в 15:07
 AWD
век живи, век учись. жаль, многие это забыли, а еще больше забили...
всегда пожалуйста smail54.gif
цитата
09/01/14 в 15:56
 Yacc
Если кому-то интересно, то на массивах до 10к shuffle в 3 раза быстрее array_rand, если выбирать больше половины массива. icon_smile.gif
цитата
09/01/14 в 17:21
 Lexikon
у меня 150 тумб icon_smile.gif и их кол-во врят ли будет даже 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


Эта страница в полной версии