我想回显将从列表中选择的颜色,但它们必须是唯一的。我知道如何生成一般的独特的东西,但如果有一个合适的列表,我不知道如何做到这一点。
它也必须在循环中执行此操作,这就是为什么我使用for循环执行此操作。
例如,在开始时,假设该数组有5个元素,并且在第一个循环中它将选择蓝色和回声,在回显蓝色后,在第二个循环中,将有4个选项,它将回显一个其余四个元素随机出现,蓝色不在选项中。
例如,在我的目的中,它必须生成如下:蓝色 - 白色 - 绿色 - 黄色 - 紫色(唯一)虚假的是:蓝色 - 蓝色 - 绿色 - 黄色 - 紫色(不是唯一的)
$colors= array('blue', 'green', 'yellow', 'purple', 'white');
for($i = 1; $i <=5; $i++){
echo $colors[array_rand($colors)];
}
答案 0 :(得分:3)
$colors = array('blue', 'green', 'yellow', 'purple', 'white');
$colors = array_unique($colors);
shuffle($colors);
foreach($colors as $color)
echo $color."\n";
答案 1 :(得分:1)
您可以在PHP中使用array_unique
。
例如,如果您按如下方式生成数组。
$array = array('blue','blue','green','yellow','purple');
$out = array_unique($array);
//will product
//array('blue', 'green', 'yellow', 'purple');
答案 2 :(得分:0)
来自PHP.net的注释:5.2.10生成的键数组不再被洗牌。
所以我所说的array_rand()
不再可能使用了。相反,您可以使用:
<?php
$colors = array('blue', 'green', 'yellow', 'purple', 'white');
shuffle($colors);
foreach ($colors as $shuffledColor) {
echo $shuffledColor . "\n";
}
?>
答案 3 :(得分:0)
您可以尝试复制数组,然后随机播放副本,最后弹出结果。
例如:
$array = array('blue','green','yellow','purple');
$copy = $array;
shuffle($copy);
while(!empty($copy)){
echo array_pop($copy);
}