Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中洗牌并显示目录中的图像_Php_Html - Fatal编程技术网

在PHP中洗牌并显示目录中的图像

在PHP中洗牌并显示目录中的图像,php,html,Php,Html,我正试图从一个目录中获取上传的图像,并改变它们的顺序。我能够很容易地获得图像并按顺序显示它们,但似乎无法将它们洗牌 <?php $imagesDir = 'uploads/'; $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); $randomImage = $images[array_rand($images)]; ?> <div id="images">

我正试图从一个目录中获取上传的图像,并改变它们的顺序。我能够很容易地获得图像并按顺序显示它们,但似乎无法将它们洗牌

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

<div id="images">
        <?php
            $print_r($images);
            $shuffleimages = shuffle($images);
            foreach($shuffleimages as $shuffleimage) {
                echo '<img src="'.$shuffleimage.'" />';
            }
        ?>
</div>

我不知道这是否与glob函数有关,或者我是如何更普遍地检索图像的?我已经环顾了其他关于SO的问题,但似乎看不出我的做法有什么不同/错误

你走得太远了。。没有必要重新分配$images。。。您的$shuffleimages将只返回true或false布尔值


您还可以使用和使用sorting_order参数通过对文件进行排序来洗牌。

请注意,PHP返回一个布尔值。因此,在您的例子中,$shuffleimages将是true或false,而不是一个无序数组。另外,在洗牌之前或之后,您在哪里打印$images?谢谢抱歉重新打印,不清楚-我在洗牌前打印了,现在编辑问题,明白了。是的,洗牌可能很有效。只是在无序排列之前输出原始数组,然后尝试循环通过布尔值而不是无序排列的数组。扎克让它工作了。谢谢你,真的把它弄清楚了——我不确定它返回了什么,似乎不知道如何找到它返回了什么!实际上,我想在后面的页面中按顺序显示图像,这一部分我没有提到,所以我试图保持$images数组的原样。我已经通过在顶部添加另一个变量修复了这个问题:$shuffleImages=glob$imagesDir.'*。{jpg,jpeg,png,gif}',大括号;在下面,我定义$images,然后洗牌。但我想知道你是否能想出一个更好的方法来完成这部分代码?@JackClarke,我建议:$shuffleImages=$images;洗牌$shuffleImages@showdev–好的,把它放进去,它工作得很好–谢谢!我是否可以出于好奇问一下为什么这更可取?为什么不使用glob两次呢?@JackClarke我认为glob执行起来比复制一个变量需要更长的时间。我在想:一旦我把厨房抽屉里所有的东西都写下来,我就可以复印清单,而不用再看抽屉了。@showdev一个完美的解释!我会记住厨房的抽屉,以备将来使用。如果有一个SCANDIR_SORT_随机值,它会很整洁。事实上,我无法理解你所说的随机排序背后的逻辑。在我们的世界里没有随机排序,也就是说,排序是随机化的一种反面@肖德夫
Array (

[0] => uploads/image1.jpg

[1] => uploads/image2.jpg

[2] => uploads/image3.jpg

[3] => uploads/image4.jpg

[4] => uploads/image5.jpg

)
    <?php
        shuffle($images); // $images will be shuffled.
        foreach($images as $shuffleimage) {
            echo '<img src="'.$shuffleimage.'" />';
        }
    ?>