2012-11-06 2 views
0

В настоящее время у меня есть фрагмент кода, который выбирает случайные значения из массива, но я хотел бы предотвратить его выбор повторяющихся значений. Как я могу это достичь? Это мой код до сих пор:Предотвращение выбора массивом повторяющихся значений

$facilities = array("Blu-ray DVD Player","Chalk board","Computer", "Projector", 
"Dual data projector", "DVD/Video"); 

for($j = 0; $j < rand(1, 3); $j++) 
    { 
    $fac = print $facilities[array_rand($facilities, 1)] . '<br>'; 
    } 

ответ

5

Я думаю, вы должны смотреть на array_rand

$facilities = array("Blu-ray DVD Player","Chalk board","Computer","Data projector","Dual data projector","DVD/Video"); 
$rand = array_rand($facilities, 2); 
           ^----- Number of values you want 

foreach ($rand as $key) { 
    print($facilities[$key] . "<br />"); 
} 
+1

+1 вы снова – GBD

+0

Почему это не будет работать с 'array_rand ($ facilities, 1);'. Я пробовал \t \t \t '$ rand = array_rand ($ facilities, rand (1, 3));' но он не работает – methuselah

+0

'echo $ facilities [array_rand ($ facility)];' вот как получить только один элемент – Baba

2

Вы можете вернуть несколько случайных ключей от array_rand(), указав номер, чтобы вернуться в качестве второго параметра.

$keys = (array) array_rand($facilities, rand(1, 3)); 
shuffle($keys); // array_rand() returns keys unshuffled as of 5.2.10 

foreach ($keys as $key) { 
    echo $facilities[$key] . '<br>'; 
} 
+1

Единственное, что стоит отметить, это то, что это будет неудачно, если 'rand (1, 3)' равно 1. – deceze

+1

@deceze теперь этого не произойдет. – salathe

Смежные вопросы