我有以下图片,我正在使用旋转木马。每次页面加载时我都希望它们以不同的顺序进入。我在考虑使用随机数生成器对数字进行排序,但后来我不知道如何设置它以便数字只使用一次。如果这可以在一个循环中完成,那么它是可扩展的,这将是伟大的。
请参阅下面的静态代码,除了最后的数字外,所有图像都被命名为相同
<div class="image-entry">
<img src="/images/carousel-1.jpg" />
</div>
<div class="image-entry">
<img src="/images/carousel-2.jpg" />
</div>
<div class="image-entry">
<img src="/images/carousel-3.jpg" />
</div>
<div class="image-entry">
<img src="/images/carousel-4.jpg" />
</div>
谢谢!
答案 0 :(得分:10)
有一个函数,shuffle()
:
$images = array
(
'/images/carousel-1.jpg',
'/images/carousel-2.jpg',
'/images/carousel-3.jpg',
'/images/carousel-4.jpg',
);
shuffle($images); // the magic
foreach ($images as $image)
{
echo '<div class="image-entry">';
echo "\t" . '<img src="' . $image . '" />';
echo '</div>';
}
答案 1 :(得分:2)
假设你知道你想要多少张图片(比如4张),并且所有达到这个数字的图片都是有效的,并以1开头:
<?php
$images = range(1, 4);
shuffle($images);
foreach ($images as $_) {
echo <<<HTML
<div class="image-entry">
<img src="/images/carousel-$_.jpg" />
</div>
HTML;
}
答案 2 :(得分:1)
创建一个数字/图像名称数组,然后将数组洗牌,然后输出它,就像这样。
$images[0] = 'car-1.jpg';
$images[1] = 'car-2.jpg';
$images[2] = 'car-3.jpg';
shuffle($images);
foreach($images as $img){
echo '<img src="'.$img.'" />';
}
您可以根据自己的需要调整上述代码。
答案 3 :(得分:1)
<?php
$imageArr = glob( rtrim( $_SERVER['DOCUMENT_ROOT'] , '/' ).'/images/carousel-*.jpg' );
shuffle( $imageArr );
$outPattern = '<div class="image-entry"><img src="%s" /></div>';
foreach( $imageArr as $carImage )
echo sprintf( $outPattern , $carImage )."\n";
此解决方案的好处是它可以自动检测images文件夹中名为 carousel-X.jpg 的所有图像,并在轮播中使用它们。
甚至:
<?php
$imageArr = glob( rtrim( $_SERVER['DOCUMENT_ROOT'] , '/' ).'/images/carousel-*.jpg' );
shuffle( $imageArr );
if( count( $imageArr ) ){
echo '<div class="image-entry"><img src="'.implode( '" /></div><div class="image-entry"><img src="' , $imageArr ).'" /></div>';
}else{
echo '<!-- No Images in Array //-->';
}