0

おそらく、PHP ルートよりも優れた方法があるでしょう。私はアイデアを受け入れます。

問題: ユーザーごとにフォルダー構造があります。このフォルダーには、ファイルまたはサブフォルダーが含まれる場合があります。ファイルがあるフォルダーのみに関心があります。クエリを実行して、多次元配列で再帰的なリストを取得できます (Web に投稿された PHP コードから)。問題は、フラット化されたときに最も内側のファイル名のみをリストする多次元配列を取得し、パスとファイル、またはパス + ファイルを SQL データベースに格納する必要があることです。アイデアは、ユーザーが自分のファイルを表示し、Web インターフェイスを使用してそれらを削除できるようにすることです。

PHP 再帰関数の結果の例を次に示します。「Jimmy」という名前のフォルダー内には、次のファイルがあります。

Array
(
[0] => info.txt
[1] => log.tmp
[2] => README.md
[css] => Array
    (
        [0] => style.css
    )

[images] => Array
    (
        [0] => flower.gif
    )
[3] => index.php
[testDir] => Array
    (
        [anotherTestDir] => Array
            (
                [0] => test2.php
            )

    )
[5] => listing.txt
[temp] => Array
    (
    )

)

私が見たいのはこれです:

/jimmy/info.txt
/jimmy/log.tmp
/jimmy/README.md
/jimmy/css/style.css
/jimmy/images/flower.gif
/jimmy/index.php
/jimmy/testDir/anotherTestDir/test2.php
/jimmy/listing.txt

次に、文字列をソートして mysql dbase に追加する必要があります。この効果を達成する方法についての助けをいただければ幸いです。フラット化された配列を取得したら、ユーザーの「フォルダー」テーブルに一度に追加したいと思います。

4

2 に答える 2

3
<?php
$d = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/dir'));
foreach($d as $file){
        if($file->isFile()) echo $d->getSubPathname().PHP_EOL;
}
于 2013-04-22T23:33:03.040 に答える