У меня в основном есть форма, которая создает папку при отправке, она берет последнюю созданную папку (например, имя папки 7) и создает новую карту на основе последней созданной папки (7 + 1), создавая новую папку с именем 8 и т. д.
Однако, когда я создаю карту с именем 10 и эхо $latest_dir
он по-прежнему будет показывать 9 .. в то время как он должен просто показывать самое большое число за все время.
$maindir = scandir("uploads/");
$latest_dir = $maindir[0];
$new_dir = $latest_dir+1;
echo $latest_dir;
Возможно, это глупый вопрос, но я не очень хорошо разбираюсь в PHP, и это единственное, что пока не работает. Любая помощь очень ценится 🙂
Это мой код, я не тестировал его, но думаю, что он работает.
$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;
Я решил проблему, папки были упорядочены неправильно, я изменил свой код на это:
$maindir = scandir("uploads/",1);
rsort($maindir);
$latest_dir = $maindir[0];
$new_dir = $latest_dir+1;
Он упорядочивает папки правильно и всегда показывает самое высокое имя папки.
Спасибо всем за помощь 🙂