2

ディレクトリを読み取り、すべてのファイルの作業ディレクトリを配列で返す関数を作成しようとしていますが、機能していません。コードが機能しない理由がわかりません。助けてもらえますか?

$postsDirectory = "../posts/";

function listFiles() {
    $results = array();
    $handler = opendir($postsDirectory);

    while ($file = readdir($handler)) {
        if ($file != "." && $file != "..") {
            $results[] = getcwd($file);
        }
    }
    closedir($handler);
    return $results;
}
4

1 に答える 1

0

getcwd()実行中のスクリプトの作業ディレクトリを返します。パラメーターを必要とせず、ファイル システム上の他のファイルとは何の関係もありません (また、「作業ディレクトリ」という概念は任意のファイルに対して意味を持ちません)。あなたが実際に欲しいのは、特定のディレクトリ内のすべてのディレクトリのリストだと思います。

これにはRecursiveDirectoryIteratorを使用します。

$it = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($postsDirectory),
    FilesystemIterator::SKIP_DOTS
);

$results = array();
while($it->valid()) {
    if($it->isDir()) {
        $results[] = $it->getSubPath();
    }
    $it->next();
}
于 2013-01-27T14:55:00.113 に答える