使用 scandir() 取得目錄條目,配合 is_dir() 過濾出子目錄,可構建簡易目錄瀏覽功能。
<?php
echo "<h2>Subdirectories</h2><ul>";
$baseDir = dirname(__FILE__); // 當前腳本所在目錄
$targetDir = $baseDir . '/somedir/';
$entries = scandir($targetDir);
foreach ($entries as $item) {
// 跳過 . 與 ..
if ($item === '.' || $item === '..') continue;
$fullPath = $targetDir . $item;
if (is_dir($fullPath)) {
echo "<li><a href='?subdir=$item'>$item</a></li>";
}
}
echo "</ul>";
?>
function listDirsRecursive($dir, $level = 0) {
$items = scandir($dir);
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$path = $dir . '/' . $item;
if (is_dir($path)) {
echo str_repeat(' ', $level) . "- $item\n";
listDirsRecursive($path, $level + 1);
}
}
}
listDirsRecursive('/path/to/root');
scandir() 會一次讀取所有條目到記憶體,超大目錄(萬檔以上)建議改用 opendir() + readdir() 迭代器模式。is_readable())、例外處理與快取機制。