PHP随机读取文件


PHP read files randomly

所以我有一点麻烦,我想随机排序所有文件夹以便在网格中显示它们,缩略图,所以这是我的代码

<?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);
}
?>

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

如果你能帮我那就太好了。

$file包含一个单独的文件引用作为字符串

它不是目录

中所有文件的数组

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

so不能用于字符串

如果您想随机化目录中文件的顺序,首先用所有文件构建一个数组,打乱它,然后对每个文件执行需要执行的操作。

我用了这个,效果很好:

$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>";