php iki farklı rasgele dizi öğelerini almak

4 Cevap php

Bir dizi

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

Ben iki FARKLI rasgele öğeleri almak istiyorum.

Aşağıdaki kodu:

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

it is possible to get two times the same letter. I need to prevent this. I want to get always two different array elements. Can somebody tell me how to do that? Thanks

4 Cevap

Her zaman yuvarlak ilk defa seçilen elemanı kaldırmak olabilir, sonra tekrar almak olmaz. Eğer dizi bir kopyasını oluşturmak değiştirmek istemiyorsanız.

 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() iki parametre, dizi ve almak istediğiniz (farklı) elemanların sayısını alabilir.

mixed array_rand ( array $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];
}

Ne bu konuda?

$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.

Döngü ikinci almak için ise ilk rasgele, sonra .. bir do kullanmak Get:

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

Random2 random1 olarak aynı değildir kadar bu döngü devam edecektir