0

まあ、タイトルはあまり役に立たないかもしれません。このエラーを説明する方法がわかりません。それは私の愚かな何かによって引き起こされたと確信しています。私の人生では、私はそれを理解することはできません。

これが私がやろうとしていることです:私のディレクトリ「img/gallery」にフォルダのリストがあります

これらの各フォルダー内には画像があります

「img/thumbs」というフォルダーもあり、構造はまったく同じですが、サムネイル画像があります

「img/gallery」内のフォルダーの名前を表示し、そのフォルダー内の画像へのリンクを含むサムネイルのリストを表示するという 2 つのことを行うスクリプトを作成しています。

これら 2 つのコンポーネントは、別々に実行すると正常に動作します。まとめると、でエラーが発生します

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) {

$file の値を var_dump して、正しいことを確認することもお勧めします。

各フォルダー内の各ファイルを反復処理する場合は、最初の while ループで 2 番目の 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 に答える