Получить полный путь к файлу из массива - PullRequest
1 голос
/ 09 февраля 2011

У меня есть этот массив (который исходит из определенной функции: список и фильтр файлов каталога по расширению):

Array
(
    [Dir_test] = Array
        (
            [dir_client] = Array
                (
                    [0] = index.html
                )

            [0] = index.html
        )
)

И я хотел бы получить что-то вроде.Примечание: в каталоге может быть больше подкаталогов.

Array
(
    [0] = Dir_test/dir_client/index.html
    [1] = Dir_test/index.html
)

Спасибо за вашу помощь;)

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

Предположим, что ваши входные данные выглядят так:

$arr = array(
    'Dir_test' => array (
        'dir_client' => array (
            0 => 'index.html'
        ),

        0 => 'index.html'
    )
);

Самое простое решение - рекурсивное, например:

function add_dir($dir) {
    global $dirs;

    $dirs[] = $dir;
}

// pathsofar should always end in '/'
function process_dir($dirarray, $pathsofar) {
    foreach ($dirarray as $key => $value) {
        if (is_array($value)) {
            process_dir($value, $pathsofar . $key . '/');
        } else {
            add_dir($pathsofar . $value);
        }
    }
}

process_dir($arr, '');

print_r($dirs);

Запуск:

$ php arr2.php
Array
(
    [0] => Dir_test/dir_client/index.html
    [1] => Dir_test/index.html
)
0 голосов
/ 09 февраля 2011

Напишите рекурсивную функцию, которая принимает массив и строку в качестве аргументов, возвращает и вызывает себя для каждого ключа массива, который содержит в себе массив.

0 голосов
/ 09 февраля 2011

Вы можете использовать array_walk_recursive function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...