4

ファイルのフルパスを含む配列があります。このような:

[0] => "dir1/dir2/dir3/file.ext"
[1] => "dir1/dir2/dir3/file2.ext"
[2] => "dir1/dir2/dir3/file3.ext"
[3] => "dir2/dir4/dir5/file.ext"

それを解析して、次のような多次元配列を取得する必要があります。

[dir1] => [dir2] => [dir3] => file.ext
                           => file2.ext
                           => file3.ext
[dir2] => [dir4] => [dir5] => file.ext

何か案は?構造のさまざまな深さで動作する必要があります。

4

2 に答える 2

2

私はあなたの宿題をやった !:-)

http://ideone.com/UhEwd

コード:

<?php

function parse_paths_of_files($array)
{
    $result = array();

    foreach ($array as $item)
    {
        $parts = explode('/', $item);
        $current = &$result;
        for ($i = 1, $max = count($parts); $i < $max; $i++)
        {
            if (!isset($current[$parts[$i-1]]))
            {
                 $current[$parts[$i-1]] = array();
            }
            $current = &$current[$parts[$i-1]];
        }
        $current[] = $parts[$i];
    }

    return $result;
}

$test = array(
    "dir1/dir2/dir3/file.ext",
    "dir1/dir2/dir3/file2.ext",
    "dir1/dir2/dir3/file3.ext",
    "dir2/dir4/dir5/file.ext"
);

print_r(parse_paths_of_files($test));

?>
于 2012-09-16T17:02:26.920 に答える