PHP从文件夹中随机顺序抓取图像

时间:2017-11-06 08:47:56

标签: php image

我有一个包含图像的文件夹,并将它们回显到页面 这工作正常,但我希望他们在页面加载时随机更改输出 这是输出图像的部分:

<?php 
$directory = 'somewhere/images/';
$files = getPathsByKind($directory,'svg');
if(!empty($files)) {
    for($i=0; $i < 32; $i++){
        echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
    }
}
?>

所以我认为我必须使用rand()array_rand(),但这两个都让我犯了错误。这很好,但我不知道如何解决它们。 rand()抛出了第二个参数错误。 (maxmin值)。由于这是图像,因此没有第二个参数。 <{1}}将无效,因为循环不再是array_rand()

关于如何做到这一点的任何想法?

4 个答案:

答案 0 :(得分:2)

您是否可以使用shuffle函数随机化数组,然后使用您的代码输出它们?

类似的东西:

<?php 
$directory = 'somewhere/images/';
$files = getPathsByKind($directory,'svg');
if(!empty($files)) {
    shuffle($files);
    for($i=0; $i < 32; $i++){
        echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
    }
}
?>

http://php.net/manual/de/function.shuffle.php

答案 1 :(得分:2)

如果您只想要一张图片或想要随机排列所有图片,那么您的问题就不明确了。 (我随机顺序使用所有图像);

$directory = 'somewhere/images/';
$files = getPathsByKind($directory,'svg');

if(!empty($files)) {

    shuffle($files); //randomly sort array

    for($i=0; $i < 32; $i++){
        echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
    }
}

你可以在这里看到一个洗牌的例子

https://www.w3schools.com/php/func_array_shuffle.asp

PS

  

所以我认为我必须使用rand()或array_rand(),但这两个都让我犯了错误。哪个好,但我不知道如何解决它们

如果没有看到你所拥有的东西我只能猜测,我打赌你会尝试在array_rand()以外的其他东西上做$files(可能在循环内)。

rand()只会在$min$max之间生成psudorandom数字,因此,如果您rand(1,10),则可以预期来自1-10的数字。

答案 2 :(得分:1)

只需使用此

<?php 
    $directory = 'somewhere/images/';
    $files = getPathsByKind($directory,'svg');
    if(!empty($files)) {
        shuffle($files); //This will sort your array....
        for($i=0; $i < 32; $i++){
            echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
        }
    }
?>

答案 3 :(得分:1)

  好吧,我正在研究随机输出$ i值的可能性

您可以创建一个数字为0-> 32的数组并将其随机播放,使用foreach来回显图片。

将其插入if(!empty())语句中:

$arr = range(0,32);
shuffle($arr);

foreach($arr as $i){
    echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
}