PHP随机读取文件

时间:2014-03-29 11:59:11

标签: php random shuffle readdir opendir

所以我遇到了一些麻烦,我想随机订购所有文件夹,以便用缩略图在网格中显示它们,所以这里是我的代码

<?php
if ($handle = opendir('.')) {
    $blacklist = array('.htaccess', '.', '..', 'css', 'js', 'fonts', 'images', 'cv.pdf', 'includes', 'index.php', '.DS_Store', 'About');
    echo "<ul class='grid' id='grid'>";
    while (false !== ($file = readdir($handle))) {
        if (!in_array($file, $blacklist)) {
shuffle($file);
            $titre = file_get_contents($file . "/" . "Titre.txt");
            $categorie = file_get_contents($file . "/" . "Categorie.txt");
            $class_isotope = file_get_contents($file . "/" . "Classe.txt");
            echo "<li class='element mix " . $class_isotope . "' ><a href=" . $file . ">
    <img src='images/thumb-" . $file . ".jpg' alt='' /><div><h3>" . $titre . "
    <span class='subtitle'>" . $categorie . "</span></h3></div></a></li>";
        }
    }
    echo "</ul>";
    closedir($handle);
}
?>

我尝试使用shuffle功能,但它不起作用。

如果你可以帮助我,那就太好了。提前谢谢。

2 个答案:

答案 0 :(得分:0)

$file包含单个文件引用,作为字符串

它不是目录

中所有文件的数组

shuffle(&$arr)期望通过引用传递的数组作为参数$arr

所以不会使用字符串

如果你想随机化目录中文件的顺序,首先构建一个包含所有文件的数组,然后对其进行随机播放,然后对每个文件进行必要的操作。

答案 1 :(得分:0)

好吧,所以我使用了它,它完美地运作了:

$files = array();
$dir = new DirectoryIterator('.');
foreach ($dir as $fileinfo) {
$files[$fileinfo->getMTime()] = $fileinfo->getFilename();
}

shuffle($files);
echo "<ul class='grid' id='grid'>";
foreach($files as $file){
    if ($file == "index.php" or $file == ".." or $file == "/"  or $file == "." or $file == "css" or $file == "js" or $file == "fonts" or $file == "images" or $file == "cv.pdf" or $file == "includes" or $file == ".DS_Store" or $file == "About" or $file == "404.php"    ){
    }else{
         $titre = file_get_contents($file."/"."Titre.txt"); 
    $categorie = file_get_contents($file."/"."Categorie.txt"); 
    $class_isotope = file_get_contents($file."/"."Classe.txt"); 
        echo "<li class='element mix ".$class_isotope."' ><a href=".$file."><img src='images/thumb-".$file.".jpg' alt='' /><div><h3>".$titre."<span class='subtitle'>".$categorie."</span></h3></div></a></li>";
    }
}
echo "</ul>";