За последние 24 часа нас посетили 15695 программистов и 1631 робот. Сейчас ищут 938 программистов ...

array_rand() help!

Тема в разделе "PHP для новичков", создана пользователем dub13, 15 апр 2017.

  1. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    Дорого времени суток! Я совсем недавно начал изучать php и начал с простейших задач, которые находил на просторах интернета. С одной из них у меня возникли некоторые трудности, но в итоге я ее все-таки решил (можно сказать "нашел решение"). Ниже условие и мой код:

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

    PHP:
    1. 1 <?php
    2. 2
    3. 4
    4. 5 $question = 'Bla-bla-bla?';
    5. 6
    6. 7 echo $question. '<br>';
    7. 8
    8. 9 $answers = array("yes", "no", "idk", "ask anon", "depends on you");
    9. 10 $rand_keys = array_rand($answers, 2);
    10. 11 echo $answers[$rand_keys[1]] . "\n";
    11. 12
    12. 13 ?>
    Работает все отлично, вот только мне не понятен принцип работы функции array_rand(). Почему в 10 строке нужно использовать число 2, а в 11 число 1? С 1 и 0, например, не работает. А может возможно написать ее попроще?
    Может кто-нибудь может мне в краце, а лучше подробно, объяснить принцип работы этой функции? Спасибо!:(
     
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    ну смысл в том что в хз
    как я могу наблюдать скрипт выдаёт рандомно да\нет
    что тупо. тк осальные элементы тупо грузят скрипт (хотя это при таких объёмах и не фатально)
    оптимальнее рандом 4
    круче рекурентная нейросеть))))))))))
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Почитай документацию по ней, очень внимательно. https://secure.php.net/manual/ru/function.array-rand.php

    чтобы получить массив с двумя значениями где значения будут ключи из массива $answers

    там просто обращаются к ключу 1 массива $rand_keys и получают значение которое соответствует ключу из массива $answers и получают по ключу значение из $answers. Итог: выбрали случайный ключ из массива, потом по нему получили значение из другого.

    Читай документацию по array_rand если передать ей 1, то она не вернёт массив ключей, а вернёт случайное значение
     
    dub13 нравится это.
  4. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1

    Почему в 10 строке нужно использовать число 2
    чтобы получить массив с двумя значениями где значения будут ключи из массива $answers

    а зачем нам два значения?)

    мануал я читал, но там ничего не объяснено. ну может на англ только, а у меня с этим не очень.
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    там я ссылку на русскую версию дал, всё о функции есть, читай, если чтение 48 часов без перерыва не поможет, то может и программировать не нужно

    хитрая функция, если 1 то вернёт случайное значение, если больше 1 то вернёт массив в котором значения будут случайные ключи из массива.

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

    проще так, потому что нам нужно случайное значение одно:
    PHP:
    1. 9 $answers = array("yes", "no", "idk", "ask anon", "depends on you");
    2. 10
    3. 11 echo array_rand($answers, 1) . "\n";
     
    dub13 нравится это.
  6. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1

    Спасибо за ответ, буду разбираться. Так как ты написал более понятно. :)
    --- Добавлено ---
    Вот только он выдает в ответ просто число:mad:


    upload_2017-4-15_16-8-37.png
     

    Вложения:

  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    это я уже запутался, там возвращает при 1 не массив, а ключ

    PHP:
    1. $answers = array("yes", "no", "idk", "ask anon", "depends on you");
    2. 10
    3. 11 echo $answers[array_rand($answers, 1)] . "\n";
     
    dub13 нравится это.
  8. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    окей, спасибо