在 php 中随机播放项目的最大数量



假设我有30张图片。和3种尺寸,"小","中","大"。

我想以随机

顺序输出所有 30 张图像,并给出一个随机大小类,小/中和大。

目前是这样的

$random = array("small", "medium", "large");
$images_array = *ALL IMAGES HERE*
shuffle($images_array);
foreach($images_array as $image){ ?>
    <div class="box <?php echo $random[rand(0, count($random) - 1)]; ?>"><img src="<?php echo $image; ?>" /></div>
<?php } ?>

一切正常,我确实得到了随机课程。但!

如何更改此设置,以便为大型类设置最大数量?我希望大的只出现四次。

只需创建一个包含 30 个值的数组,其中 4 个是"large"值,其余是 "small""medium" 的随机组合。这个数组,当洗牌时,会给你你想要的结果。

<?php
$random = array("large", "large", "large", "large");
for ($i = 0; $i < 26; $i++) {
    $random[] = (rand(1, 2) == 1) ? "small" : "medium";
}
$images_array = *ALL IMAGES HERE*
shuffle($random);
shuffle($images_array);
foreach ($images_array as $key => $image) {
    echo '<div class="box '.$random[$key].'"><img src="'.$image.'" /></div>';
}
?>
<?php $large = 0;
foreach($images_array as $image){
  $class = $random[rand(0, count($random) - 1)];
  if ($class == 'large') {
    $large++;
    if ($large > 4)
     $class = $random[rand(0, count($random) - 2)];
  }
  echo '<div class="box ' . $class .'"><img src="' . $image . '" /></div>';
} ?>

您可以简单地使用 $counter 变量来计算large值被使用的次数。而且,如果超过,只需再次随机化该值。

<?php
$random = array("small", "medium", "large");
$images_array = *ALL IMAGES HERE*
shuffle($images_array);
$counter = 0;
foreach($images_array as $image){ ?>
    $rand = rand(0, $counter > 3 ? 1 : 2);
    if ($rand == 2) $counter++;  // corresponds to `large`
    echo '<div class="box ' . $random[$rand] .'"><img src="'. $image .'" / </div>';
}

最新更新