У меня есть следующий массив:
$family = array("Amit", "Suresh", "Vinit", "Somesh", "Sagar", "Shriram");
Теперь я хочу случайным образом выбрать имя из вышеуказанного массива.
Как мне это сделать?
Я знаю о функции rand (). Даже я пытался rand($family);
но это дало мне предупреждение, как показано ниже:
Предупреждение: rand () ожидает ровно 2 параметра, 1 указан в /var/www/project/index.php в строке 7
Это требует второго аргумента.
Поэтому, пожалуйста, кто-нибудь, помогите мне выбрать строку случайным образом из массива, который содержит все строковые элементы.
Благодарю.
Сначала прочитайте документы, в частности, есть точная функция, которую вы ищете
http://php.net/manual/en/function.array-rand.php
<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>
Попробуй это
$num = rand(0, count($family)-1);
$family[$num]
rand()
Функция принимает либо ноль, либо два аргумента. С нулевыми аргументами будет получено псевдослучайное целое число от 0 до getrandmax()
, В противном случае он ожидает два целочисленных аргумента min
а также max
и будет производить псевдослучайное целое число между min
а также max
включительно.
Как отметил @Yurich, это то, что вы, вероятно, хотите.
$num = rand(0, count($family-1));
$family[$num]
Объяснение: rand(0, count($family-1))
выдаст случайное целое число от 0 до количества элементов в вашем массиве минус один. Этот номер будет сохранен в $num
, который впоследствии используется для доступа к массиву по «случайному» индексу.
// Count the elements
$count = count($family);
// decrement the count by 1
$count--;
// echo a random item from the array
echo $family[rand(0, $count)];
rand () не является хорошим вариантом, и для PHP 7 есть лучший вариант. Увидеть ниже:
$family = array("Amit", "Suresh", "Vinit", "Somesh", "Sagar", "Shriram");
if(version_compare(PHP_VERSION,'7.0.0', '<') ) {
// for PHP < 7
$rand_name = $family[mt_rand(0, count($family) - 1)];
} else {
// for PHP >= 7
$rand_name = $family[random_int(0, count($family) - 1)];
}
$num = rand(0, count($family)-1);
$family[$num]