下面是一个查找子目录并将其存储在数组中的脚本。当我使用foreach单步执行目录时,我得到并错误地将数组转换为字符串。我已经使用gettype对foreach变量进行了the,并显示为一个字符串。
$dir = '/Video/Movies'; //base directory for search
$ar_dirlist[] = []; // array to store directory list
//Function to walk directories and store subdirectories in an array
function listFolderFiles($dir){
global $ar_dirlist;
$ffs = scandir($dir);
// $ffs = sortbydir($dir, $ffs);
unset($ffs[array_search('.', $ffs, true)]);
unset($ffs[array_search('..', $ffs, true)]);
// prevent empty ordered elements
if (count($ffs) < 1)
{
echo '<br />';
return;
}
//parse scandir output in array $ffs
foreach($ffs as $ff){
$phpfile = $dir . '/' . $ff;
if(is_dir($phpfile))
{
$ar_dirlist[] = $phpfile;
listFolderFiles($phpfile); //if directory recurse
}
}
}
listFolderFiles($dir);
foreach ($ar_dirlist as $tmpdir) {
echo '<h3>' . $tmpdir . '</h3>'; // This is line with error
//echo '<br />';
}
发布于 2020-06-16 14:58:59
我解决了这个问题,这是我初始化数组的方式。我应该使用null,而不是[];
发布于 2020-06-16 15:01:34
我想你可能在初始化$ar_dirlist
数组时出错了。它应该是:
$ar_dirlist = [];
https://stackoverflow.com/questions/62411042
复制相似问题