scandir - 如何获取原始文件夹 - 文件顺序
scandir - how to get original folders - files order
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";
}
}
}
结果 - 所有项目都回显为 class - file
并按以下顺序排列:
ipsum
lorem
moon.php
sun
如何以 folder
和原始顺序获取文件夹 - 首先是文件夹,然后是文件?
lorem ipsum lorem ipsum lorem ipsum lorem ipsum
你们准备好了。
$path
所以
$path.$el
您发布的代码可能有问题,因为 scandir
return 只是文件和文件夹的名称,而不是它们的绝对路径。
当您稍后使用 is_dir
时,您只需传递 file/folder 名称(相对路径)。这样做时,根据 documentation
If filename is a relative filename, it will be checked relative to the current working directory.
您可以通过将正确的路径传递给 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";
}
}
}
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";
}
}
}
结果 - 所有项目都回显为 class - file
并按以下顺序排列:
ipsum
lorem
moon.php
sun
如何以 folder
和原始顺序获取文件夹 - 首先是文件夹,然后是文件?
lorem ipsum lorem ipsum lorem ipsum lorem ipsum
你们准备好了。
$path
所以
$path.$el
您发布的代码可能有问题,因为 scandir
return 只是文件和文件夹的名称,而不是它们的绝对路径。
当您稍后使用 is_dir
时,您只需传递 file/folder 名称(相对路径)。这样做时,根据 documentation
If filename is a relative filename, it will be checked relative to the current working directory.
您可以通过将正确的路径传递给 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";
}
}
}