【问题标题】:Randomly Generate Multiple Files From Directory with PHP使用 PHP 从目录中随机生成多个文件
【发布时间】:2013-07-18 07:48:54
【问题描述】:

我正在建立一个网站,人们可以在其中上传图片、GIF 和视频。在主页上,我想从上传目录中随机列出文件。

<article class="item thumb" data-width="384">
    <h2><?php echo $file_title;?></h2>
    <a href="<?php echo $randomImage ?>"><img src="<?php echo $randomImage ?>" alt=""></a>
</article>

<article class="item thumb" data-width="274">
    <h2><?php echo $file_title;?></h2>
    <a href="<?php echo $randomImage ?>"><img src="<?php echo $randomImage ?>" alt=""></a>
</article>

它总共做了五次。 $randomImage 由代码生成:

<?php
   $imagesDir = 'uploads/';
   $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
   $randomImage = $images[array_rand($images)];
   $file_title = $randomImage;
?> 

我希望能够添加一项功能,当用户向下滚动时,会出现越来越多的包含图像的文章,每篇文章都包含一个随机但以前未显示的文件。如何在不手动输入唯一变量的情况下随机显示文件?

附:现在我没有任何文件存储在数据库中。

【问题讨论】:

    标签: php html image loading random-sample


    【解决方案1】:

    $images 中删除随机选择的图像,然后再选择另一个。

    循环播放 5 张图片

    <?php
    // get all files
    
    $imagesDir = 'uploads/';
    $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
    $imagesCount = count($images);
    
    for($i = 0 ; $i < $imagesCount ; $i++) {
    
        // select image 
    
        $randomIndex = array_rand($images); // select image index
    
        $file_title = $randomImage = $images[$randomIndex]; // use selected image
    
        unset($images[$randomIndex]); // remove selected image
        // print_r($images); // you can see what left in $images
    
        // show image
    
        ?>
        <article class="item thumb">
            <h2><?php echo $file_title;?></h2>
            <a href="<?php echo $randomImage ?>"><img src="<?php echo $randomImage ?>" alt=""></a>
        </article>
        <?php
    }
    ?>
    

    【讨论】:

    • 我使用了这段代码,它在每个块加载相同的图像。调用时应该使用什么变量: " alt=""> 而不是 $randomimage?
    • 您必须在每个块之前获取新的$randomImage。在我的答案中查看新代码。
    • 完美!随着越来越多的块被加载,我需要它继续加载图像,而不是只循环 5 个图像。将有一个功能,当用户滚动时,会出现更多内容框。如何将此代码设置为永远循环并继续确保同一张图片不会被加载两次?
    • 使用count($images) 可以获得所有图像 - 请参见上面的代码 - 但它会同时为您提供所有图像。如果您需要在用户滚动时加载更多块,则需要 JavaScript + Ajax 和 PHP 必须记住文件中的 $images。或者您可以将$images 发送到 javascript 并在 javascript 中完成所有工作(选择随机图像并显示下一个块)
    猜你喜欢
    • 2012-08-06
    • 2016-03-02
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2010-10-05
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多