php получают два различных случайных элемента массива

От массива

 $my_array = array('a','b','c','d','e');

Я хочу получить два РАЗЛИЧНЫХ случайных элемента.

Со следующим кодом:

 for ($i=0; $i<2; $i++) {
    $random = array_rand($my_array);  # one random array element number
    $get_it = $my_array[$random];    # get the letter from the array
    echo $get_it;
 }

возможно получить два раза ту же букву. Я должен предотвратить это. Я хочу получить всегда два различных элемента массива. Кто-то может сказать мне, как сделать это? Спасибо

13
задан creativz 24 February 2010 в 15:50
поделиться

5 ответов

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

 for ($i=0; $i<2; $i++) {
    $random = array_rand($my_array);  # one random array element number
    $get_it = $my_array[$random];    # get the letter from the array
    echo $get_it;

    unset($my_array[$random]);
 }
6
ответ дан 1 December 2019 в 19:31
поделиться

Что насчет этого?

$random = $my_array; // make a copy of the array
shuffle($random); // randomize the order
echo array_pop($random); // take the last element and remove it
echo array_pop($random); // s.a.
9
ответ дан 1 December 2019 в 19:31
поделиться
foreach (array_intersect_key($arr, array_flip(array_rand($arr, 2))) as $k => $v) {
    echo "$k:$v\n";
}

//or

list($a, $b) = array_values(array_intersect_key($arr, array_flip(array_rand($arr, 2))));
3
ответ дан 1 December 2019 в 19:31
поделиться

Получите первое случайное число, затем используйте цикл do.. while, чтобы получить второе:

$random1 = array_rand($my_array);
do {
    $random2 = array_rand($my_array);
} while($random1 == $random2);

Цикл будет продолжаться до тех пор, пока random2 не станет таким же, как random1

-1
ответ дан 1 December 2019 в 19:31
поделиться

array_rand () может принимать два параметра: массив и количество (разных) элементов, которые вы хотите выбрать.

смешанный array_rand (массив $ input [, int $ num_req = 1])
$my_array = array('a','b','c','d','e');
foreach( array_rand($my_array, 2) as $key ) {
  echo $my_array[$key];
}
17
ответ дан 1 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: