我创建了一个数组,显示一个目录的几个子目录中的所有文件(本质上是一个目录树)。这些文件都是在单击时打开该目录中文件的链接。
我遇到的问题是我希望能够设置我的结果样式,但是所有子目录和文件名都具有相同的类(因为它们是使用相同的代码生成的)。
这是我的php:
<?php
function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ol class="song">';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li class="title">';
if(is_dir($dir.'/'.$ff)){
echo $ff;
listFolderFiles($dir.'/'.$ff);
}else{
echo '<a href="'.$dir.'/'.$ff.'" target="_blank">'.$ff.'</a>';
}
echo '</li>';
}
}
echo '</ol>';
}
listFolderFiles('Current Songs');
?>
生成的html是这样的:
<ol class="song">
<li class="title">
Sub Directory Folder 1
<ol class="song">
<li class="title">
<a href="Current Songs/Song1.mp3"></a></li>
<li class="title">
<a href="Current Songs/Song1.pdf"></a></li>
</ol>
</li>
<li class="title">
Sub Directory Folder 2
<ol class="song">
<li class="title">
<a href="Current Songs/Song2.mp3"></a></li>
<li class="title">
<a href="Current Songs/Song2.pdf"></a></li>
</ol class="song">
</li>
</ol>
</li>
正如您所看到的,每个条目都由2个有序列表组成,但是它们都具有相同的类,所有列表项都是如此,这使得几乎不可能进行任何样式化。
我想要的是生成以下html标记:
<ol class="song">
<li class="title">
Sub Directory Folder 1
</li> <!--END TITLE HERE-->
<ol>
<li>
<a href="Current Songs/Song1.mp3"></a></li>
<li>
<a href="Current Songs/Song1.pdf"></a></li>
</ol>
</ol> <!--END SONG OL HERE-->
任何人都可以就我需要对我的代码进行哪些php更改提出一些建议,以便输出上述内容。
答案 0 :(得分:1)
您也可以将类名作为参数传递
function listFolderFiles($dir,$myclass){
$ffs = scandir($dir);
echo '<ol class="song'.$myclass.'">';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li class="title'.$myclass.'">';
if(is_dir($dir.'/'.$ff)){
echo $ff;
listFolderFiles($dir.'/'.$ff);
}else{
echo '<a href="'.$dir.'/'.$ff.'" target="_blank">'.$ff.'</a>';
}
echo '</li>';
}
}
echo '</ol>';
}
listFolderFiles('Current Songs','_myclass');
listFolderFiles('Current Songs','');