0

好吧,标题可能不是很有帮助。我不确定如何描述这个错误。我确定这是由我的愚蠢行为引起的。但是,对于我的生活,我无法弄清楚。

这就是我想要做的:我的目录“img/gallery”中有一个文件夹列表

在每个文件夹中都有图像

还有一个名为“img/thumbs”的文件夹,其结构完全相同,但带有缩略图

我正在编写一个执行两件事的脚本:它显示“img/gallery”中的文件夹名称,并显示缩略图列表,其中包含指向该文件夹中图像的链接。

这两个组件单独运行时可以正常工作。放在一起,我得到一个错误

if ($handle = opendir('img/gallery/$file/'))

说 $file 不是一个有效的目录。

这是代码:

`

if ($handle = opendir('img/gallery/')) {
$blacklist = array('.', '..', 'somedir', 'somefile.php');
while (false !== ($file = readdir($handle))) {
    if (!in_array($file, $blacklist)) {
        echo "<h2>$file</h2>\n";
    }
}
closedir($handle);
}

echo "<P class='gallery'>\n";


if ($handle = opendir('img/gallery/$file/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "<a class='fancybox' href='img/gallery/$file/$entry' data-fancybox-group='gallery'>\n<img src='img/thumbs/$file/$entry' alt='' /></a>\n";
        }
    }

    echo "</p>\n";

    closedir($handle);
}

`

建议会非常有帮助。谢谢!

4

2 回答 2

1

opendir 应该返回 true 或 false 但它可能不能很好地与 if 语句一起玩试试这个:

$handle = opendir('img/gallery/'.$file.'/');
if ($handle) {

最好将 var_dump 出 $file 值以确保它是正确的。

如果要遍历每个文件夹中的每个文件,肯定需要在第一个循环中嵌套第二个 while 循环......?

于 2012-10-25T16:37:15.917 回答
0

您是否尝试过为变量添加引号?我总是引用我的变量,只是很好的做法。

if ($handle = opendir('img/gallery/')) {
$blacklist = array('.', '..', 'somedir', 'somefile.php');
while (false !== ($file = readdir($handle))) {
    if (!in_array($file, $blacklist)) {
        echo "<h2>$file</h2>\n";
    }
}
closedir($handle);
}

echo "<P class='gallery'>\n";


if ($handle = opendir('img/gallery/' . $file . '/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "<a class='fancybox' href='img/gallery/" . $file . "/" . $entry . "' data-fancybox-group='gallery'>\n<img src='img/thumbs/" . $file . "/" . $entry . "' alt='' /></a>\n";
        }
    }

    echo "</p>\n";

    closedir($handle);
}
于 2012-10-25T16:35:21.990 回答