php中图像的无序排列顺序

php中图像的无序排列顺序,php,random,shuffle,Php,Random,Shuffle,我有下面的图片,我正在使用的旋转木马。每次加载页面时,我都希望它们以不同的顺序排列。我想用一个随机数生成器对这些数字进行排序,但我不知道如何使这些数字只使用一次。如果这可以在一个循环中完成,所以它是可扩展的,那就太好了 请参阅下面的静态代码,除了末尾的数字之外,所有图像的名称都相同 <div class="image-entry"> <img src="/images/carousel-1.jpg" /> </

我有下面的图片,我正在使用的旋转木马。每次加载页面时,我都希望它们以不同的顺序排列。我想用一个随机数生成器对这些数字进行排序,但我不知道如何使这些数字只使用一次。如果这可以在一个循环中完成,所以它是可扩展的,那就太好了

请参阅下面的静态代码,除了末尾的数字之外,所有图像的名称都相同

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


谢谢

这有一个函数:

$images=array
(
“/images/carousel-1.jpg”,
“/images/carousel-2.jpg”,
“/images/carousel-3.jpg”,
“/images/carousel-4.jpg”,
);
洗牌($images);//魔法
foreach($images作为$image)
{
回声';
回声“\t””;
回声';
}

创建一个数字/图像名称数组,然后洗牌该数组,然后像这样输出它

$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.'" />';
}
$images[0]=“car-1.jpg”;
$images[1]=“car-2.jpg”;
$images[2]=“car-3.jpg”;
洗牌(图像);
foreach($img形式的图像){
回声';
}

您可以调整上述代码以满足您的需要。

假设您知道需要多少图像(例如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;
}

哇。。。洗牌甚至都没想到要查一下。谢谢@菲尔:没问题,PHP几乎所有东西都有内置函数[题外话]:有趣的是,最简单的答案总是获得大量的向上投票,而复杂的答案却没有。
shuffle
通过引用对数组进行操作,并返回一个表示成功或失败的布尔值。因此,您必须向它传递一个变量(而不是表达式),您的结果将出现在传递的变量中,而不是函数返回值中。我更新了我的答案以反映这一点。
<?php
$images = range(1, 4);
shuffle($images);

foreach ($images as $_) {
   echo <<<HTML
      <div class="image-entry">
         <img src="/images/carousel-$_.jpg" />
      </div>
HTML;
}
<?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";
<?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 //-->';
}