我在尝试将几个数组合并在一起以用于我正在处理的项目时遇到问题。我越来越接近预期的结果,我已经搜索了这个网站,但找不到可行的解决方案。
我怀疑这很重要,但是这个项目正在 IIS 上进行测试,但最终结果必须在 IIS 和 Apache 上都可以工作。
所以这里......我有四个目录,我需要按字母顺序合并和排序。
$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
andksort
等,但要么它们不起作用,要么我无法在我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.