Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: help! array_rand()
Форумы портала PHP.SU » » Вопросы новичков » help! array_rand()

Страниц (1): [1]
 

1. dub13 - 15 Апреля, 2017 - 14:39:58 - перейти к сообщению
Дорого времени суток! Я совсем недавно начал изучать 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, например, не работает. А может возможно написать ее попроще?
Может кто-нибудь может мне в краце, а лучше подробно, объяснить принцип работы этой функции? Спасибо! Прощайте
2. Строитель - 15 Апреля, 2017 - 16:12:23 - перейти к сообщению
dub13 пишет:
А может возможно написать ее попроще?
PHP:
скопировать код в буфер обмена
  1. $answers = array("yes", "no", "idk", "ask anon", "depends on you");
  2.  
  3. echo $answers[array_rand($answers)] . "\n";
dub13 пишет:
объяснить принцип работы этой функции
Вот подробное описание: array_rand()
3. dub13 - 15 Апреля, 2017 - 16:15:27 - перейти к сообщению
Строитель пишет:
dub13 пишет:
А может возможно написать ее попроще?
PHP:
скопировать код в буфер обмена
  1. $answers = array("yes", "no", "idk", "ask anon", "depends on you");
  2.  
  3. echo $answers[array_rand($answers)] . "\n";
dub13 пишет:
объяснить принцип работы этой функции
Вот подробное описание: array_rand()


Читая мануал я ничего не понял(
За простое решение спасибо!
4. Строитель - 15 Апреля, 2017 - 16:26:35 - перейти к сообщению
dub13 пишет:
Читая мануал я ничего не понял
Ну, тогда имеет смысл или прочитать его ещё раз... и ещё...

Или задать конкретный вопрос, что именно вам не понятно?
5. Ermite - 16 Апреля, 2017 - 19:33:56 - перейти к сообщению
dub13 пишет:
Работает все отлично, вот только мне не понятен принцип работы функции array_rand(). Почему в 10 строке нужно использовать число 2, а в 11 число 1? С 1 и 0, например, не работает. А может возможно написать ее попроще?

Потому что, если ввести число 2 или более - функция вернёт массив. 1 - строку, а 0 - ошибку.
Видимо, вы делали так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $rand_keys = array_rand($answers, 1);
  2. echo $answers[$rand_keys[1]];

$rand_keys[1] не существует, т.к. функция передала нам строку (число).
Правильнее будет так:
PHP:
скопировать код в буфер обмена
  1. $answers = array("yes", "no", "idk", "ask anon", "depends on you");
  2. $rand_keys = array_rand($answers, 1);
  3. echo $answers[$rand_keys] . "\n";

 

Powered by ExBB FM 1.0 RC1