[英]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";
}
}
}
结果-所有项目都作为类回显- file
并按以下顺序进行:
ipsum
lorem
moon.php
sun
如何将文件夹作为folder
并以原始顺序保存-首先是文件夹,然后是文件?
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
您发布的代码可能有问题,因为scandir
仅返回文件和文件夹的名称,而不返回它们的绝对路径。
以后使用is_dir
,仅传递文件/文件夹名称(相对路径)。 这样做时,根据文档
如果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";
}
}
}
你们都准备好了。
$path
所以
$path.$el
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.