我的名字是Shruti。我是php的新手。我有一个随机显示图像的程序,我的程序中有大约200个图像。我想显示没有重复的随机图像,任何人都可以帮忙。这是我的代码。
感谢您的帮助
谢谢。
答案 0 :(得分:2)
我不知道有关$img_id
的内容,但您可以考虑使用shuffle()
。
shuffle($file_array);
但是你失去了与$img_id
的联系。您可能(我不确定这是否是最佳解决方案),以这种方式构建您的阵列:
$file_array = array(
array("images/bag200.bmp", 1),
array("images/bag178.bmp", 1),
array("images/bag004.bmp", 0,
...
);
从长远来看,最好将所有图像路径存储在CSV file甚至数据库中。相信我,你不想用>维护一个数组。手动200个条目;)
你可以这样循环图像(它们现在是随机顺序):
<?php foreach($file_array as $image): ?>
<img src="<?php echo $image ?>" />
<?php endforeach; ?>
如果您只想显示随机选择的图像子集,则可以执行以下操作:
$n = 20; // want to display 20 images
$rand = array_rand(range(0,200), $n); // draw keys randomly
shuffle($rand); //shuffle keys
foreach($rand as $r) {
echo '<img src="' . $file_array[$r] . '" />';
}
对您的代码的一些评论:
$ran = array_rand($file_array);
$ran
包含从图像中随机选择的密钥。
for ($i=0;$i<200;$i++) {
//while (in_array($tst,$rand_array)){
$tst = $file_array[$ran];
$id = $img_id[$ran];//}
$rand_array[] = $tst;
$rand_id[] = $id;
}
您始终从$file_array
和$image_id
中选择相同条目,因为您永远不会更改$ran
。这样你可以获得200次相同的图像。
答案 1 :(得分:0)
如果您想要随机性但需要唯一性,那么您正在寻找一种准随机数生成器。有许多不同的类型具有不同的属性。在此处查看有关创建算法的信息:http://www.mathworks.nl/access/helpdesk/help/toolbox/stats/br5k9hi-8.html