Scandir()显示最新的文件夹

时间:2015-01-14 10:25:28

标签: php scandir

我基本上有一个表单,在提交时创建一个文件夹,它需要最后创建的文件夹(例如文件夹名称为7)并根据最后创建的文件夹(7 + 1)创建一个新的地图thuss名为8等的文件夹等。

然而,当我创建一个名为10且echo $latest_dir的地图时,它仍会显示9 ..而它应该始终显示最高数字。

$maindir = scandir("uploads/");
$latest_dir = $maindir[0];
$new_dir = $latest_dir+1;

echo $latest_dir;

这可能是一个愚蠢的问题,但我对PHP并不是那么好,这是迄今为止唯一没有用的东西。非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:0)

这是我的代码,我没有测试过,但我认为它有效。

$maindir = scandir("uploads/");

//remove '.' and '..' folder you can also use a regex to be sur to have only folder with
// number after filter
$mainDir = array_filter($maindir, function ($fileName) {
   if ($fileName !== "." || $fileName !== "..") {
      return TRUE;
   }
   else {
      return FALSE;
   }
}

$maxNumber = 0;

// Browse the array in order get the highest number (maybe you could use natsort() instead
for($i = 0 ; $i < count($mainDir) ; $i++) {
   if($maxNumber > (int) $mainDir[i]) {
      $maxNumber = (int) $mainDir[i];
   }
}

$new_dir = $maxNumber + 1;

答案 1 :(得分:0)

我修复了问题,文件夹没有正确排序,我将代码更改为:

$maindir = scandir("uploads/",1);
rsort($maindir);
$latest_dir = $maindir[0];
$new_dir = $latest_dir+1;

它正确地命令文件夹并始终显示最高的文件夹名称。 感谢大家的帮助:)