私が取り組んでいるプロジェクトのために、いくつかの配列を一緒にマージしようとして問題が発生しています。望ましい結果に近づいていますが、このサイトを検索しましたが、有効な解決策が見つかりません。
問題があるとは思えませんが、このプロジェクトは IIS でテストされていますが、最終結果は IIS と Apache の両方で動作する必要があります。
だからここに行く... マージしてアルファベット順に並べ替える必要がある4つのディレクトリがあります。
$dir1 = "D:\\dir1";
$dir2 = "D:\\dir2";
$dir3 = "D:\\dir3";
$dir4 = "D:\\dir4";
$dirA = array($dir1,$dir2,$dir3,$dir4);
次のことを行うと、必要な結果に「近づく」ことができます。
try
{
$object = new ArrayIterator($dirA);
foreach($object as $key=>$value)
{
foreach(new DirectoryIterator($value) as $item)
{
if(!$item->isDot())
{
echo $item->getFilename() .' ';
if(file_exists($value.'\\'.$item.'\folder.jpg'))
{
echo 'Y<br />';
} else {
echo 'X<br />';
}
}
}
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
最終的に各ディレクトリのフォルダのリストが(アルファベット順で)表示されますが、それらはマージされず、代わりにグループ化されます$item->key()
(実際にマージしようとしているのはこれだと思いますか?array_merge
成功せず)
sort
やなどを使用してみましたが、機能しないか、リストを作成ksort
する前に機能する正しい配置がわかりません。echo
私の最終的な目標は、echo
この全体をテーブルにまとめて、複数を使用file_exists
して、すべてのフォルダーで利用可能である必要がある特定のファイルをチェックすることです...たとえば、それぞれのルートに「folder.jpg」が必要です、だから私はそれを次のように表示したいと思います:
Folder Name folder.jpg (other files to be verify)
Directory1 Y Y Y Y Y Y
Directory2 Y Y X Y Y Y
Directory3 X X Y X X X
Directory4 Y Y Y Y Y Y
--
上記が紛らわしくなく、十分な情報を提供してくれることを願っています。私は、プロジェクトを手伝ってくれる人を招待して、私に連絡してくれる人に感謝したいと思います (明らかに、対応するエリアの人)。
再度、感謝します。
--
編集: 少し明確にしようとしています。
最後に、このプロジェクトは特定の変数を 'settings.ini' に書き込み、それらを読み取ります (その部分は正常に動作しているので、今は完全に無視して、すべてを単一のファイルにローカルに書き込みます)。
私の場合、異なるドライブに 4 つのフォルダーがあり、各フォルダーには 15 ~ 130 個のサブディレクトリ (すべて一意の名前) があります。したがって、省略されたリストは次のようになります。
T:\New Set\
A\
D\
G\
D:\Old Set\
B\
F\
etc.
---------
$dir1 = 'T:/New Set';
$dir2 = 'D:/Old Set';
$dir3 = 'D:/Overage';
$dir4 = 'G:/Unsorted';
$dirA = array($dir1,$dir2,$dir3,$dir4);
最初に上に投稿したコードを使用すると、以下のようなものが得られます(アルファベット順ではなく)
A // from $dir1
D // from $dir1
G // from $dir1
B // from $dir2
F // from $dir2
etc.
DaveRandom によって投稿されたコードを使用すると、次のように表示されました。
Array ( [T:\New Set] => Array ( [folder.jpg] => 1 [cover.jpg] => [poster.jpg] => ) [D:\Old Set] => Array ( [folder.jpg] => 1 [cover.jpg] => [poster.jpg] => ) [D:\Overage] => Array ( [folder.jpg] => 1 [cover.jpg] => [poster.jpg] => ) [G:\Unsorted] => Array ( [folder.jpg] => 1 [cover.jpg] => [poster.jpg] => ) )
Folder Name folder.jpg cover.jpg poster.jpg
T:\New Set Y X X
D:\Old Set Y X X
D:\Overage Y X X
G:\Unsorted Y X X
今のところ、ファイルを確認して他の方法でテーブルを作成できるので、唯一の質問はサブディレクトリをソートすることだけだと思います。明確にするために、ディレクトリ配列を上記のように表示するのではなく、代わりに以下のように表示する必要があります。
A // from $dir1
B // from $dir2
D // from $dir1
F // from $dir2
G // from $dir1
etc.