[英]List all sub-directories and files with PHP
我正在嘗試構造一個函數,該函數將從URL中回顯所有子目錄和文件的無序列表。
我知道這里有很多例子,但是我正在努力尋找合適的東西。
這是我到目前為止的內容:
$dir = "an/example/directory";
echo "<ul id='folderList'>";
$dirArr = dirToArray($dir);
listDir($dirArr);
echo "</ul>";
第一個函數以遞歸方式搜索文件和文件夾,並將它們排序為多維數組:
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[$dir . DIRECTORY_SEPARATOR . $value] = $this->dirToArray($dir . DIRECTORY_SEPARATOR . $value);
} else {
$result[$dir . DIRECTORY_SEPARATOR . $value] = $dir . DIRECTORY_SEPARATOR . $value;
}
}
}
return $result;
}
現在,這是我遇到的問題。 第二個函數應該遍歷多數組並相應地回顯其內容。
function listDir($multiArr)
{
foreach ($multiArr as $key => $value) {
if (is_array($value)) {
echo '<li class="sub-directory"><span>'.basename($key).'</span>';
echo '<ul>';
listDir($multiArr[$key]);
echo '</ul>';
} else {
echo '<li class="file"><span>'.basename($value).'</span>';
}
echo '</li>';
}
}
但是,第二個功能似乎沒有按預期工作。 我不確定為什么,但是遞歸循環似乎有麻煩。
無論如何,想法是,一旦運行了兩個函數,輸出應如下所示:
<ul id='folderList'>
<li class="sub-directory"><span>sub-directory-name</span>
<ul>
<li class="file><span>fileName1</span></li>
<li class="file><span>fileName2</span></li>
</ul>
</li>
<li class="file><span>fileName3</span></li>
</ul>
這是獲取主目錄和子目錄的簡單功能
function listdir($dir){
$ffs = scandir($dir);
echo '<ol>';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li>'.$ff;
if(is_dir($dir.'/'.$ff)) listdir($dir.'/'.$ff);
echo '</li>';
}
}
echo '</ol>';
}
listdir('Main Dir');
您可以使用bekow函數以表格格式列出...
function dirToArray($dir)
{
$cdir = scandir($dir);
echo "<table>";
foreach ($cdir as $key => $value)
{
echo "<tr>";
if (!in_array($value, array(".")))
{
if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
{
$path = $dir . DIRECTORY_SEPARATOR . $value;
echo "<td><a href='file_name.php?dir=$path' >" . $value . "</a></td>";
}
else
{
$path = $dir . DIRECTORY_SEPARATOR . $value;
echo "<td></td><td><a>". $value . "</a></td>";
}
}
echo "</tr>";
}
echo "</table>";
}
dirToArray($dir);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.