Вывести рандомное значение массива

Случайный выбор из массива в PHP

У меня уже спрашивали пару раз, как я делаю случайный вывод цитат у себя на сайте в блоке «Умные цитаты«. Далее мне удалось выяснить, что проблема здесь с непониманием людей, как вывести случайный элемент из массива в PHP. Задача простая, но тем не менее, раз возникают вопросы, то надо на них отвечать.

Сразу приведу код. Допустим, есть массив с набором цитат. И нужно выбрать одну случайную из них и вывести:

Ключевой момент — это получение случайного числа. Всё, что нужно сделать, это задать правильные границы. Если нужно выбрать на всей длине массива случайный элемент, то это от 0 до (длины массива минус 1). А далее просто вытащить элемент из массива с полученным случайным индексом.

Что касается задачи с цитатами, то их лучше хранить в базе данных. В принципе, если сайт совсем простой, то можно и в текстовом файле. Но если в базе данных, то лучше использовать RAND() и LIMIT в SQL-запросе, чтобы Вы сразу получали единственную и случайную цитату из базы данных.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Читайте также:  Вещь окрасилась от другой вещи чем вывести

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 20 ):

    Я правильно понимаю? $res = $mysqli->query(«SELECT `text` FROM `citata` ORDER BY RAND() LIMIT 1»); $arr = $res->fetch_assoc(); echo $arr[‘text’];

    Да, всё правильно.

    Я не могу понять, а зачем от count($quotes) отнимать 1? Ведь тогда получается, что номер самой последней цитаты мы не принимаем в счет.

    Не рекомендовал бы использовать ORDER BY RAND(), это немного тормозит сайт. Данная функция ускорит данный запрос: function getCitata()< $mysqli = conectDB(); $offset_result = $mysqli->query(«SELECT MIN(`id`) AS min, MAX(`id`) AS max FROM citata»); $offset_row = mysqli_fetch_object($offset_result); $RID = mt_rand($offset_row->min,$offset_row->max); $res_ad = $mysqli->query(«SELECT text FROM citata WHERE id >= «.$RID.» LIMIT 1″); $row_ad = $res_ad->fetch_assoc(); closeDB($mysqli); echo $row_ad[‘text’]; >

    Подскажите куда надо вставлять это код? И еще можно ли сделать что бы при нажатие кнопки текст менялся, если да то напишите))) p.s. Можно по подробней только) спс.

    Вопрос некорректный, рекомендую посмотреть вот этот курс: http://srs.myrusakov.ru/freephp

    У меня мобильный интернет и я не могу скачать видео урок( а в youtube есть видео урок?

    В youtube нет, но с мобильным Интернетом и там не удастся посмотреть.

    А это можно сделать при помощи HTML или JS?

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

    Можете привести скрипт?

    Там есть функция Math.random(), вот её и используйте. А с массивом Вы обязаны уметь работать, а если не умеете, то тогда изучайте JS с нуля.

    Михаил, напишите пожалуйста статью а лучше скрипт полной статистики сайта на PHP и MySQL, я вас очень прошу

    Постараюсь что-нибудь придумать, хотя идеальную статистику невозможно написать.

    Михаил, если такой проект у Вас будет, дадите ссылку.)

    Михаил, а нужно делать unset для массива? после вывода?

    Если он не нужен больше, то можно, хотя никто это не делает, а если потребуется, то нет.

    смотрите, я правильно поняла? то есть в данном случае получается такой код:

    А чем Вам не нравится array_shuffle()? Перемешали массив, выбрали нулевой элемент.

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Случайное значение из массива.

    Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

    Задать случайное значение цифры
    Хочу записать в переменную тип char рандомную цифру от 0 до 10, но чтобы она была там не как цифра.

    Работа с Функциями (Создать переменную, присвоить случайное значение. )
    Доброго всем времени суток =) У меня возникли некоторые вопросы при работе с функциями в с++.

    и кстати после токого что я получу, 1 2 или 3. а я спрашивал как выбрать случайное число из из массива с числами например 492, 81235, 9617?!

    Добавлено через 2 минуты

    Выводится случайное значение переменной у при х=-3. Что делать?
    Задание: Вычислить и вывести на экран таблицу функции y=f(x) в интервале с шагом h. Результаты.

    Случайное перемешивание содержимого одномерного массива
    Здравствуйте. Подскажите пожалуйста как реализовать случайное перемешивание содержимого одномерного.

    Случайное число в диапозоне и заполнение массива.
    Добрый день. Может ктонить помоч с кодом на С++? Задание звучит так: Написать функцию которая.

    Взять из массива случайное значение
    Как взять из массива значений, допустим такого Integer Nums = <8, 10, 11, 12>; случайное.

    Источник

    array_rand

    (PHP 4, PHP 5, PHP 7, PHP 8)

    array_rand — Выбирает один или несколько случайных ключей из массива

    Описание

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

    Список параметров

    Определяет количество выбираемых элементов.

    Возвращаемые значения

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

    Список изменений

    Версия Описание
    7.1.0 Внутренний алгоритм получения случайных чисел изменён с функции rand библиотеки libc на генератор на базе » Вихря Мерсенна.

    Примеры

    Пример #1 Пример использования array_rand()

    Смотрите также

    User Contributed Notes 5 notes

    If the array elements are unique, and are all integers or strings, here is a simple way to pick $n random *values* (not keys) from an array $array:

    ( array_flip ( $array ), $n ); ?>

    /**
    * Wraps array_rand call with additional checks
    *
    * TLDR; not so radom as you’d wish.
    *
    * NOTICE: the closer you get to the input arrays length, for the n parameter, the output gets less random.
    * e.g.: array_random($a, count($a)) == $a will yield true
    * This, most certainly, has to do with the method used for making the array random (see other comments).
    *
    * @throws OutOfBoundsException – if n less than one or exceeds size of input array
    *
    * @param array $array – array to randomize
    * @param int $n – how many elements to return
    * @return array
    */
    function array_random (array $array , int $n = 1 ): array
    <
    if ( $n 1 || $n > count ( $array )) <
    throw new OutOfBoundsException ();
    >

    return ( $n !== 1 )
    ? array_values ( array_intersect_key ( $array , array_flip ( array_rand ( $array , $n ))))
    : array( $array [ array_rand ( $array )]);
    >

    // An example how to fetch multiple values from array_rand
    $a = [ ‘a’ , ‘b’ , ‘c’ , ‘d’ , ‘e’ , ‘f’ , ‘g’ ];
    $n = 3 ;

    // If you want to fetch multiple values you can try this:
    print_r ( array_intersect_key ( $a , array_flip ( array_rand ( $a , $n ) ) ) );

    // If you want to re-index keys wrap the call in ‘array_values’:
    print_r ( array_values ( array_intersect_key ( $a , array_flip ( array_rand ( $a , $n ) ) ) ) );

    array_rand () takes a random value without ever being able to go back in its choice of random value.
    A simple example:
    I decide to mix an array of 10 entries to retrieve 3 values. This choice will give increasing and random values.

    $pm = array_rand($myarray,3);
    // $pm return array(0->0,1->6,2->8)

    But if I decide to shuffle an array of 10 entries to get 10 entries, array_rand () will choose to assign a value to each return value and therefore the return array will not be random.

    $gm = array_rand($myarray,count($myarray));
    // $gm not random array(0->0,1->1,2->2,3->3,4->4,5->5,6->6,7->7,8->8,9->9)

    The easiest way to have a truly random value:
    either use array_rand () in a loop of 1 value at a time

    $deg = range(-60,60);
    $size = range(16,64);
    $color = [«blue»,»red»,»green»,»pink»,»orange»,»purple»,»grey»,»darkgreen»,»darkkhaki»];
    $i = 0;
    $longueur = 10;
    do <
    ++$i;
    printf(» %s «,
    $deg[array_rand($deg)],
    $size[array_rand($size)],
    $color[array_rand($color)],
    $alnum[array_rand($alnum)]);

    Источник

    Как вывести случайное значение из массива?

    Помощь в написании контрольных, курсовых и дипломных работ здесь.

    Как присвоить случайное значение элементу двумерного массива
    Привет всем! Помогите пожалуйста, не знаю почему задают ошибки! using System; using.

    Случайное значение из массива.
    В массиве содержится скажем 3 числа привязаных к переменным, int V1,V2,V3; V1 =.

    Взять из массива случайное значение
    Как взять из массива значений, допустим такого Integer Nums = <8, 10, 11, 12>; случайное.

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

    Решение

    Решение

    Решение

    Случайное значение массива, не равное заданному
    Привет всем. Задача: имеется массив, например $arr с таким содержимым (ключ—значение): 0—4.

    Присвоить элементу массива случайное значение (Random)
    Уважаемые пользователи сайта, помогите пожалуйста в проблеме: Как присвоить в Pascal (формы) к.

    Как получить случайное значение переменной?
    ЛЮди привет помгите мне плиз может конечно ламерский вопрос как получить случайное значение.

    Как вывести случайное число?
    Ребят, как вывести случайное число? Нужно чтобы могло рандомное число могло быть и положительным и.

    Источник

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

    Картина такая: есть n число значений которые случайным образом могут попасть на определенное место на странице. Порывшись в интернете я нашел код, который позволяет сделать при каждом обновлении страницы:

    Но это не совсем то что нужно мне. Необходимо сделать так чтобы это происходило именно каждые 30 минут. Каждые 30 минут на основе случайного выбора подставляется новое значение.
    Как это осуществить?

    • Вопрос задан более двух лет назад
    • 1993 просмотра

    В копилку вариантов ответов добавлю такие:

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

    $random_value = $frases[rand(0,count($array)-1)]; // это самый очевидный вариант

    // вариант 2
    shuffle($frases);
    $random_string = $frases[0]; // со своими издержками, но на маленьких массивах код читаемый

    Источник

    Оцените статью