2012-11-06 104 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($ facilities)];''''''''''只有一个元素 – 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