所以我有一点麻烦,我想随机排序所有文件夹以便在网格中显示它们,缩略图,所以这是我的代码
<?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>";