Забыли пароль?
Запросите новый здесь.

Автор темы: lucky
ID темы: 2013
Информация:
Тема содержит 3 сообщения, была просмотрена 2788 раз.
Просмотр темы
PHP-Fusion Russia » Веб-разработка » PHP
 Распечатать тему
Как работает функция array_rand() ?
lucky
Здравствуйте!

Хочу уточнить как работает функция array_rand(). Вот пример. Для вывода ключей в случайном порядке использую array_rand():

Загрузить источник  GeSHi: PHP
  1. $tags_key = array_rand($tags, 5);
  2.  
  3. $i = 0;
  4. foreach($tags_key as $key)
  5. {
  6. $i++;
  7. $link[] = '<a href="/?option=search&s_text=' . trim($tags[$key]) . '" class="link_' . $i . '">' . trim($tags[$key]) . '</a>';
  8. }
  9.  
  10. shuffle($link);
  11.  
  12. foreach($link as $tag)
  13. {
  14. echo $tag;
  15. }
Добавлено за 0.031 секунд, используя GeSHi 1.0.8.10


Нужно 5 ключей из массива - $tags_key = array_rand($tags, 5); . Что мне не нравится.. Сначала не заметил, всё вроде хорошо и как надо работает, НО после нескольких перезагрузок страницы увидел, что ключей выводится то 5 то 4. Поставил другое число - 4. Теперь чередуется то 4 то 3, т.е. периодически на один ключ показывает меньше чем задано.

Это особенность array_rand() или я что-то в коде не так написал? Всего элементов в массиве $tags_key - 17, это простые ключевые слова и словосочетания.
 
spiker
Скорее всего есть пустые значения в массиве $tags

Смотри массив $link функц. print_r();
Скачать исходники  Код
print_r($link);




ЗЫ
А для чего массив $link?
Можно же "перемешать" shuffle($tags_key);
А ссылки выводить echo '<a href="/?option....
x1 x1 x1 x1
 
lucky
spiker, Спасибо, где Вы раньше были), да это так, пустая строка попала.

Объединено 05.01.2014 14:33:
ЗЫ
А для чего массив $link?
Можно же "перемешать" shuffle($tags_key);
А ссылки выводить echo '<a href="/?option....


И в правду зачем лишний цикл ...,

переделал:

Загрузить источник  GeSHi: PHP
  1. $tags_key = array_rand($tags, 5);
  2. shuffle($tags_key);
  3. foreach($tags_key as $key)
  4. {
  5. echo '<a href="/?option=search&s_text=' . $tags[$key] . '">' . $tags[$key] . '</a>';
  6. }
Добавлено за 0.026 секунд, используя GeSHi 1.0.8.10

Изменил(а) lucky, 05.01.2014 14:36
 

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Топ 5 пользователей форума
Alex Alex (1,211)   Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)