显示随机图像而不重复

时间:2010-06-21 20:47:12

标签: php

我的名字是Shruti。我是php的新手。我有一个随机显示图像的程序,我的程序中有大约200个图像。我想显示没有重复的随机图像,任何人都可以帮忙。这是我的代码。

感谢您的帮助

谢谢。

2 个答案:

答案 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

相关问题