Здравствуйте. Хочу уточнить как работает функция array_rand(). Вот пример. Для вывода ключей в случайном порядке использую array_rand(): Код (Text): $tags_key = array_rand($tags, 5); $i = 0; foreach($tags_key as $key) { $i++; $link[] = '<a href="/?option=search&s_text=' . trim($tags[$key]) . '" class="link_' . $i . '">' . trim($tags[$key]) . '</a>'; } shuffle($link); foreach($link as $tag) { echo $tag; } Мне нужно 5 ключей из массива - $tags_key = array_rand($tags, 5); . Что мне не нравится.. Сначала не заметил, всё вроде хорошо и как надо работает, НО после нескольких перезагрузок страницы увидел, что ключей выводится то 5 то 4. Поставил другое число - 4. Теперь чередуется то 4 то 3, т.е. периодически на один ключ показывает меньше чем задано. Это особенность array_rand() или я что-то в коде не так написал? Всего элементов в массиве $tags_key - 17, это простые ключевые слова и словосочетания.
Даже не знаю чем Вам помочь. Вот такой код пытается найти ситуацию при которой элементов в массиве $link не пять. Код (PHP): $tags = Array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ); $n = 0; do { $tags_key = array_rand($tags, 5); $i = 0; $link = Array(); foreach( $tags_key as $key ) { $i++; $link[] = '[url="/?option=search&s_text='.trim($tags[$key]).'"]'.trim($tags[$key]).'[/url]'; } shuffle($link); $n++; } while( count( $link ) == 5 and $n < 1000000 ); var_dump( $n ); Но за миллион проходов не находит такой ситуации. А что у Вас выведет такой скрипт? (только осторожно, он подвешивает сервер).
Спасибо за код, но мне не код нужен был, а уточнить как функция array_rand() работает, есть ли какие у неё особенности. В общем задачку решил, функция array_rand() тут оказалась не причём. Просто в выборку периодически попадала пустая строка. Откуда эта пустая строка появилась уже разобрался.