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; } 

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

Solutions Collecting From Web of "php получает два разных элемента случайных массивов"

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

  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]); } с  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]); } 

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

mixed 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]; } 

Как насчет этого?

 $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); // sa 
 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)))); 

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

 function get_random_elements( $array, $limit=0 ){ shuffle($array); if ( $limit > 0 ) { $array = array_splice($array, 0, $limit); } return $array; } 

Вот как я это сделал. Надеюсь, это поможет кому-то смутить.

 $originalArray = array( 'first', 'second', 'third', 'fourth' ); $newArray= $originalArray; shuffle( $newArray); for ($i=0; $i<2; $i++) { echo $newArray[$i]; } 

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

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

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