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