我正在处理以下内容,但对于如何将其输出感到困惑。
我有以下扫描目录内容,然后获得信息并将其保存为数组的命令:
//SCAN THE DIRECTORY
$directories = scandir($dir);
$directinfo = array();
foreach($directories as $directory){
if ($directory === '.' or $directory === '..') continue;
if(!stat($dir.'/'.$directory)){
} else {
$filestat = stat($dir.'/'.$directory);
$directinfo[] = array(
'name' => $directory,
'modtime' => $filestat['mtime'],
'size' => $filestat['size']
);
}
}
然而,当试图输出它时,我只是得到了很多休息的单个字母。我显然在输出循环中遗漏了一些东西。
foreach($directinfo as $dirInfo){
foreach($dirInfo as $drInfo){
for ($x=0; $x<=2; $x++) {
<span>"".$drInfo[$x]."<br/></span>";
}
}
}
非常感谢帮助。:)
你已经做了一切,只是删除你的for loop
。
并尝试执行以下操作-
foreach($directinfo as $dirInfo){
foreach($dirInfo as $key=>$drInfo){
echo "<span>".$key."=>".$drInfo."<br/></span>";
}
}
我认为你处理的是一个2d数组,但把它当作一个3d数组。
什么foreach($directinfo as $dirInfo){
foreach($dirInfo as $drInfo){
var_dump($drInfo);
}
}
给你?
你正在构建一个数组,dirInfo.
foreach($dirInfo as $info) {
echo "<span>" . $info['name'] . "</span>";
}
试试这个函数。它将返回所有带有path.
的文件列表。// to list the directory structure with all sub folders and files
function getFilesList($dir)
{
$result = array();
$root = scandir($dir);
foreach($root as $value) {
if($value === '.' || $value === '..') {
continue;
}
if(is_file("$dir$value")) {
$result[] = "$dir$value";
continue;
}
if(is_dir("$dir$value")) {
$result[] = "$dir$value/";
}
foreach(getFilesList("$dir$value/") as $value)
{
$result[] = $value;
}
}
return $result;
}