我什至不确定我是否尽可能高效地编写这段代码,但我被困住了,需要帮助......
HTML
<?php
echo outputDirArray($dir_array, 0, '');
?>
在 PHP 中,我有一个函数可以将我的目录放入一个数组中:
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;
} //Thanks to someone on this site for this function
然后我获取该数组并将其传递给另一个函数以按照我需要的方式输出它:
function OutputDirArray(&$arr, $x, $origName) {
$str;
foreach ($arr as $key => $value) {
if($x == 0) $origName = $key;
if (is_array($value)) {
if($x > 0) $str .= '</div>';
$str .= '<div class="infoDiv clearfix"><span class="title">'.$key.'</span><br/>'.OutputDirArray($value, ++$x, $origName).'</div>';
--$x;
} else {
if($x > 0) {
$str .= '<div class="displayImgs"><img src="images/'.$origName.'/'.$value.'"/></div>';
} else {
$str .= '<div class="infoDiv clearfix"><span class="title">Profile Picture</span>
<div class="displayImgs"><img src="images/'.$value.'"/></div></div>';
}
}
}
return $str;
}
我的var_dump($dir_array);
输出:
array(3) { [0]=> string(7) "img1.jpg" ["test1"]=> array(4) { [0]=> string(15) "subimg1.gif" [1]=> string(9) "subimg2.png" [2]=> string(9) "subimg3.jpg" ["test3"]=> array(3) { [0]=> string(15) "subsubimg1.gif" [1]=> string(9) "subsubimg2.png" [2]=> string(9) "subsubimg3.jpg" } } ["test2"]=> array(3) { [0]=> string(15) "subimg1.gif" [1]=> string(9) "subimg2.png" [2]=> string(9) "subimg3.jpg" } }
我在这里尝试做的是获取 dir_array 并逐步输出 html 代码。一切似乎都很好,除了两个问题......
1)如果我有一个子目录, $key in<span class="title">'.$key.'</span>
输出正确的密钥(在我的例子中,test3)。但是 $origName in<img src="images/'.$origName.'/'.$value.'"/>
输出使用的原始密钥(test1)。
</div>
2) 我相信由于我的 subsub dir 问题,在 subsub (test3) 输出后我留下了一个额外的。
现在试图解决这个问题已经太久了,所以非常感谢任何帮助。