Дорого времени суток! Я совсем недавно начал изучать php и начал с простейших задач, которые находил на просторах интернета. С одной из них у меня возникли некоторые трудности, но в итоге я ее все-таки решил (можно сказать "нашел решение"). Ниже условие и мой код: Сделаем программу, отвечающую на любой вопрос. Для этого создадим массив с возможными вариантами ответов, сгенерируем случайное число и возьмем из массива элемент с таким номером. PHP: 1 <?php 2 3 error_reporting(-1); 4 5 $question = 'Bla-bla-bla?'; 6 7 echo $question. '<br>'; 8 9 $answers = array("yes", "no", "idk", "ask anon", "depends on you"); 10 $rand_keys = array_rand($answers, 2); 11 echo $answers[$rand_keys[1]] . "\n"; 12 13 ?> Работает все отлично, вот только мне не понятен принцип работы функции array_rand(). Почему в 10 строке нужно использовать число 2, а в 11 число 1? С 1 и 0, например, не работает. А может возможно написать ее попроще? Может кто-нибудь может мне в краце, а лучше подробно, объяснить принцип работы этой функции? Спасибо!
ну смысл в том что в хз как я могу наблюдать скрипт выдаёт рандомно да\нет что тупо. тк осальные элементы тупо грузят скрипт (хотя это при таких объёмах и не фатально) оптимальнее рандом 4 круче рекурентная нейросеть))))))))))
Почитай документацию по ней, очень внимательно. https://secure.php.net/manual/ru/function.array-rand.php чтобы получить массив с двумя значениями где значения будут ключи из массива $answers там просто обращаются к ключу 1 массива $rand_keys и получают значение которое соответствует ключу из массива $answers и получают по ключу значение из $answers. Итог: выбрали случайный ключ из массива, потом по нему получили значение из другого. Читай документацию по array_rand если передать ей 1, то она не вернёт массив ключей, а вернёт случайное значение
↑ Почему в 10 строке нужно использовать число 2 чтобы получить массив с двумя значениями где значения будут ключи из массива $answers а зачем нам два значения?) мануал я читал, но там ничего не объяснено. ну может на англ только, а у меня с этим не очень.
там я ссылку на русскую версию дал, всё о функции есть, читай, если чтение 48 часов без перерыва не поможет, то может и программировать не нужно хитрая функция, если 1 то вернёт случайное значение, если больше 1 то вернёт массив в котором значения будут случайные ключи из массива. потому что один ключ выбрать нельзя этой функцией, так что ты правильные вопросы задаёшь. проще так, потому что нам нужно случайное значение одно: PHP: 9 $answers = array("yes", "no", "idk", "ask anon", "depends on you"); 10 11 echo array_rand($answers, 1) . "\n";
Спасибо за ответ, буду разбираться. Так как ты написал более понятно. --- Добавлено --- Вот только он выдает в ответ просто число
это я уже запутался, там возвращает при 1 не массив, а ключ PHP: $answers = array("yes", "no", "idk", "ask anon", "depends on you"); 10 11 echo $answers[array_rand($answers, 1)] . "\n";