多次元配列でディレクトリ構造を取得しようとしています。多次元配列ディレクトリマップ
私はここまでだ:
function dirtree($dir, $regex = '', $ignoreEmpty = false)
{
if (!$dir instanceof DirectoryIterator) {
$dir = new DirectoryIterator((string) $dir);
}
$dirs = array();
$files = array();
foreach ($dir as $node) {
if ($node->isDir() && !$node->isDot()) {
$tree = dirtree($node->getPathname(), $regex, $ignoreEmpty);
if (!$ignoreEmpty || count($tree)) {
$dirs[$node->getFilename()] = $tree;
}
} elseif ($node->isFile()) {
$name = $node->getFilename();
if ('' == $regex || preg_match($regex, $name)) {
$files[] = $name;
}
}
}
asort($dirs);
sort($files);
return array_merge($dirs, $files);
}
をしかし、私は、フォルダ名の代わりに、インデックス0,1 .etcを得るの問題を抱えています。 これは私のディレクトリに数字の名前があるためです
Array
(
[0] => Array // 0 should be the folder name
(
[0] => m_109225488_1.jpg
[1] => t_109225488_1.jpg
)
[1] => Array
(
[0] => m_252543961_1.jpg
[1] => t_252543961_1.jpg
)
あなたがここに '' $ var_dump' dirs'、 '$ files'をと期待される出力を追加することはできますか? –
Hmm ... 'array_merge'はどうやって動いていませんか?私はあなたのコードを実行すると、期待通りに名前でキーを付けられたディレクトリを取得します。 'array_merge'は文字列キーを保持するはずです... –
どうやら、私のディレクトリに数字の名前があったからです...私の答えのコメントのおかげで、そうでなければ私は質問に入れました。 – Alex