Итератор рекурсивного каталога Получите FilePath файла с подпапкамиPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Итератор рекурсивного каталога Получите FilePath файла с подпапками

Сообщение Anonymous »

У меня есть функция, которая рекурсивно итерации по дереву каталогов.$dir = 'files';
function dirToArray($dir) {

$result = array();

$cdir = scandir($dir);
foreach ($cdir as $key => $value) {

if (!in_array($value,array(".",".."))) {
if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) {
$result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
}
else {
$result[] = $value;
}
}
}

return $result;
}
< /code>
Я затем рекурсивно итеративно итеративно итеративно итеративно итеративно по сравнению с возвращенным массивом, чтобы отобразить хорошую структуру меню для пользователя, что также работает нормально.function printAll($arr) {

if(!is_array($arr)) {
echo '[*]'.$arr.'';
}
else {

foreach($arr as $k => $v) {

if(is_array($v)) {
echo '[*]'.$k.'';

echo '
  • ';
    printAll($v);
    echo '
';

echo '';
}
else {
echo '[*]'.$v.'';
}
}
}
}

printall(dirToArray($dir));

Результат:

, но то, что я хочу, когда я отображаю файл в пользователь href = "$ value"> $ value Как получить полный путь, включая подпапки? Например: файлы/продукты/cress/ramnunculus/invention/file.txt
Я получаю только file.txt
, поэтому, когда я нажимаю на file.txt, он говорит, что файл, конечно, не найден. $ k Потому что он дает массив для преобразования строк.function printAll($arr, $path = '') {
if(!is_array($arr)) {
echo '
[*][/i]'.$arr.'';
}
else {

foreach($arr as $k => $v) {

$file_path = $path . ($path == '' ? '' : '/') . $k;

if(is_array($v)) {
echo '[*]'.$k.'';

echo '
  • ';
    printAll($v, $file_path);
    echo '
';

echo '';
}
else {
echo '[*]'.$v.'';
}
}
}
}

printall(dirToArray($dir));


Подробнее здесь: https://stackoverflow.com/questions/364 ... subfolders
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»