fs
文件夹中的项目:
lorem
ipsum
sun
moon.php
function get_items($path){
$arr = scandir($path);
$arr = array_slice($arr, 2);
foreach($arr as $el){
if(is_dir($el)){
echo "<div class='folder'>" . $el . "</div>\n";
}
else{
echo "<div class='file'>" . $el . "</div>\n";
}
}
}
结果-所有项目均作为类file
并按以下顺序回显:
ipsum
lorem
moon.php
sun
如何以folder
的身份并以原始顺序获取文件夹-首先是文件夹,然后是文件?
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
答案 0 :(得分:2)
您发布的代码可能有问题,因为scandir
仅返回文件和文件夹的名称,而不返回它们的绝对路径。
以后使用is_dir
时,仅传递文件/文件夹名称(相对路径)。这样做时,请按照documentation
如果filename是相对文件名,则将相对于当前工作目录进行检查。
您可以通过将正确的路径传递到is_dir
is_dir("$path/$el")
为了使此解决方案有效,$path
不得带有斜杠(因为我们要做添加它)。
此外,$path
必须是目标目录的绝对路径,或者是目标目录的相对路径,即运行脚本的工作目录。
最后首先列出文件夹,然后列出文件,您可以对数组进行排序,或者更简单地说,进行两个foreach
循环,如下所示:
function get_items($path){
$arr = scandir($path);
$arr = array_slice($arr, 2);
sort($arr);
// Folders first
foreach($arr as $el){
if(is_dir("$path/$el")){
echo "<div class='folder'>" . $el . "</div>\n";
}
}
// Then files
foreach($arr as $el){
if( ! is_dir("$path/$el")){
echo "<div class='file'>" . $el . "</div>\n";
}
}
}
答案 1 :(得分:0)
你们都准备好了。
$path
所以
$path.$el