1

Topic: Как в PHP выбрать случайное значение из массива

При помощи данной функции мы можем выбрать случайный элемент (или элементы) массива. Да, именно элемент или элементы! Это может быть один элемент или их может быть несколько. Все зависит от той задачи, которая перед Вами стоит.

Однако, здесь следует учесть, что функция будет возвращать не значение элемента, а его ключ (или ключи, если элементов несколько).

В качестве параметров в скобках функция принимает: имя массива, с которым работаем и число элементов, которые необходимо выбрать.

В общем-то все просто! А еще проще будет, когда мы все это рассмотрим на примерах.

Давайте для начала будем выбирать один-единственный случайный элемент из массива.

2

Re: Как в PHP выбрать случайное значение из массива

Давайте представим, что где-то вверху на нашем сайте мы хотим выводить какие-то цитаты. Конечно, цитаты должны меняться. Каждый раз заходя на Ваш сайт, Вы хотите, чтобы пользователь видел новую цитату.

Как Вы, наверное, догадались, наиболее простой способ это реализовать – это поместить все имеющиеся цитаты-изречения в массив, а потом выбирать из этого массива случайный элемент и выводить его на экран.

Чем больше у Вас будет цитат в массиве, тем меньшая вероятность их повторения.

Но для примера я сильно заморачиваться не буду и помещу в мой массив 7 изречений.

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

Как я уже говорила, функция возвращает не значение элемента, а его ключ (или номер в списке). Таким образом, в переменной будет сохранен ключ случайного элемента.

После мне нужно будет просто вывести на экран значение нужного элемента. Для этого указываю имя массива и в квадратных скобках имя нашей переменной, которая содержит случайный ключ.

Вот и все. Посмотрите код ниже и, думаю, Вы все поймете окончательно:

<?php
$frases = array(
'Выбираем один случайный элемент массива PHP',
'Как выбрать случайный элемент из массива',
'Мы все многогранны - эти грани нужно просто раскрыть',
'В каждом новом дне миллион новых возможностей',
'Начни день с улыбки!',
'Если подаришь немного добра другому, то поучишь в разы больше',
'Не дай работе заставить тебя забыть о близких людях...');

$rand_frases = array_rand($frases, 1);

echo '<h2 style="color:#00C; margin-left:300px">'. $frases[$rand_frases] .'</h2>';
?>

Здесь в вывод на экран я еще добавила немного стилей прям в тег заголовка. Это не обязательно и лучше стили задавать через файл таблицы стилей, но для такого простого примера я его создавать не стала.

http://website-create.ru/lessons/create/mass7/1.jpg

3

Re: Как в PHP выбрать случайное значение из массива

Теперь давайте потренируемся с выводом нескольких случайных элементов массива.

В случае с одним элементом возвращается его ключ, а в случае с несколькими случайными элементами массива возвращается массив ключей. От этого мы и будем отталкиваться при выводе на экран.

Сначала создадим массив, в который занесем 7 разных имен.

Далее создаем переменную, в которую будет занесена работа функции array_rand(). Только теперь в скобках у этой функции в качестве второго аргумента укажем цифру «2». Это будет обозначать, что нам нужны 2 случайных элемента.

Результатом работы функции в данной ситуации будет массив, содержащий два случайных ключа элементов из нашего основного массива.

Поэтому при выводе на экран это нужно учесть и в квадратных скобках указать не просто имя переменной, а имя переменной, затем квадратные скобки и индекс массива. Так как элемента у нас 2, то в первом случае индекс будет [0], а во втором [1]. (Вы помните, что индексация в массивах начинается с «0».)

Вот и все. Посмотрите на код, чтобы Вам стало все более понятно:

$names = array(
'Маша',
'Саша',
'Надя',
'Мила',
'Андрей',
'Сергей',
'Антон'
);

$rand_names = array_rand($names,2);

echo '<h2 style="color:#00C; margin-left:300px">'.$names[$rand_names[0]].' и '.$names[$rand_names[1]].'</h2>';

Как результат, на экран будут выводиться два случайных имени. Каждый раз при обновлении страницы имена будут меняться.

http://website-create.ru/lessons/create/mass7/2.jpg

Источник урока