2010-06-21 105 views
0

我的名字是Shruti.I'm新的PHP。我有一个随机显示图像的程序,我的程序中有大约200张图像。我想以不重复的方式显示随机图像,任何人都可以帮助解决这个问题。这是我的代码。显示不重复的随机图像

感谢您的帮助

谢谢。

+0

没有代码:> – atamanroman 2010-06-21 20:48:19

+0

在每行代码前添加四个空格,否则它不可见。 – 2010-06-21 20:48:35

回答

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次相同图像的方式。

+0

$ img_id是另一个数组,用于在每个图像的末尾显示消息....我有随机数组的问题... – Shruti 2010-06-21 20:54:58

+0

@Shruti:因为您没有指定到底是什么问题,例如,如果您只想显示部分或全部图像,我提供了各种解决方案。我希望它有帮助。 – 2010-06-21 21:14:06

+0

@Kling谢谢你的评论基本上,我生成了200张图片的幻灯片放映,每张图片的间隔为3秒,所有图片应该随机化,没有任何重复。 – Shruti 2010-06-21 21:32:42