在PHP中的图像的随机顺序

时间:2011-04-30 12:47:49

标签: php random shuffle

我有以下图片,我正在使用旋转木马。每次页面加载时我都希望它们以不同的顺序进入。我在考虑使用随机数生成器对数字进行排序,但后来我不知道如何设置它以便数字只使用一次。如果这可以在一个循环中完成,那么它是可扩展的,这将是伟大的。

请参阅下面的静态代码,除了最后的数字外,所有图像都被命名​​为相同

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

谢谢!

4 个答案:

答案 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 //-->';
}