0

4 つのパスをループし、パスごとにその特定のパスのファイルを配列に格納したいと思います。理由は、各ファイルのタイトルとファイル パスをデータベースに挿入したいからです。

そう:

$COMICS_path = array('./images/Comics/Charts/', './images/Comics/Life/', './images/Comics/Misc/', './images/Comics/Office/', './images/Comics/Political/');

$COMICS_files = array(scandir('./images/Comics/Charts/'), scandir('./images/Comics/Life/'), scandir('./images/Comics/Misc/'), scandir('./images/Comics/Office/'), scandir('./images/Comics/Political/'));

$COMICS_path正しい配列を出力しているようです。

しかし、 $COMICS_files は、次のようなものを期待しているとき、「ARRAY」を出力するだけです:

$COMICS_files = (file1.png, file2.png, file3.png, ... file n.png)

これは可能ですか?そうでない場合は、複数のフォルダーをループして各ファイルを取得するための最良の方法を教えてもらえますか?

ありがとう!

4

3 に答える 3

1
$COMICS_files = array();
foreach($COMICS_path as $path)
    $COMICS_files = array_merge($COMICS_files, scandir($path));
var_dump($COMICS_files);

配列を返すためscandir()、それらを 1 つの大きな配列にマージする必要があります。

于 2013-03-11T18:46:43.800 に答える
1

scandir は配列を返すため、2 次元配列を出力しています。

したがって、$COMICS_files[0] は (afile1.png、afile2.png、...) になり、$COMICS_FILES[1] は (bfile2.png、bfile2.png) になります。

これらすべてのファイルを単一の配列に入れたい場合は、次のようにする必要があります

$COMICS_path = array('./images/Comics/Charts/', './images/Comics/Life/', './images/Comics/Misc/', './images/Comics/Office/', './images/Comics/Political/');
$COMICS_files = array();

$COMICS_path_sz = count($COMICS_path);
for ($i = 0; $i < $COMICS_path_sz; ++$i) {
    $tmp_arr = scandir($COMICS_path[i]);
    if ($tmp_arr !== FALSE) {
        $COMICS_files = array_merge($COMICS_files, $tmp_arr);
    }
}
于 2013-03-11T18:53:08.360 に答える
1

まず、あなたが参照している「出力」とは何かを整理する必要があります。echo の結果を参照すると、期待される結果は "ARRAY" です。

次に、「出力」が示すように、配列があります。配列を繰り返し処理し、レコードを挿入する必要があります。

アプリケーション サーバーとデータベース サーバー間の通信は高価であり、時間がかかるため、これを行うためのより洗練された方法は、すべての挿入を生成し、データベース サーバーに一度に送信することです。

于 2013-03-11T18:53:13.687 に答える