Как я могу получить X количество файлов в папке с математикой? - PullRequest
1 голос
/ 06 августа 2009

Я на самом деле это сделал, я сделал это математическое уравнение около 2 лет назад, и сейчас у меня проблемы с его пониманием.

В основном я использую это для того, чтобы, когда пользователи загружали фотографии на мой сайт, я мог сбалансировать их только с количеством фотографий X в папке.

Это дает мне что-то вроде этого 1/1 1/2 1/3 1/4 ---- 1/10 2/1 2/2 2/3 и так далее, но мне нужно изменить его, чтобы перейти 3 папки в глубине каждая папка должна иметь ограничение числа 1-9 или 1-10, тогда оно будет увеличивать это число до следующего

Таким образом, если в мою функцию введено достаточно большое число, и результат равен 3/10, то при достижении нужного количества объектов он возрастет до 4/1, а затем, когда столько тысяч объектов пройдут снова, это будет перейти к 4/2. То, что я хочу сделать, это сделать 3 номера / уровни глубокими 3/10/2 перейдет на 3/10/3, когда он дойдет до 3/10/10, он будет 4/1/1 4/1/2 4 / 1/3, когда третье место дойдет до 10, оно дойдет до 4/2/1

<?PHP
function uploadfolder($x) { 
  $dir = floor($x/18001) + 1;
  $sdir = ceil($x/2000) % 9;
  return "$dir/$sdir";
}
?>

Я потратил много времени 2 года назад, чтобы заставить его делать это с 2-мя уровнями глубины, и мне просто повезло, и теперь это несколько смущает меня, оглядываясь назад

1 Ответ

4 голосов
/ 06 августа 2009

Кажется, примерно так:

Упакует 2000 изображений в подкаталог (0..8), используя строку

 $sdir = ceil($x/2000) % 9

Прописано: сколько раз 2000 умещается в $ x. Если вы ограничите это до 9 подкаталогов с помощью модуля 9, вы снова получите 18001-ую фотографию в подкаталог 0.

Верхний уровень изменяется, используя 18001 в качестве предела. Все фотографии с 1..18000 попадают в каталог 1. (+1 просто сдвигает интервал, чтобы начать с 1. Это строка

$dir = floor($x/18001) + 1;

Теперь вы можете сделать это примерно так для 3 уровней (псевдокод, поскольку я не знаю PHP):

function uploadfolder($x) {
  $numOfPics = 2000;
  $numOfFolders = 9;

  $topdir = ceil($x / ($numOfPics * $numOfFolders * $numOfFolders));
  $middir = floor($x / ($numOfPics * $numOfFolders)) % $numOfFolders + 1;
  $botdir = (floor($x / $numOfPics) % $numOfFolders) + 1;
  return "$topdir/$middir/$botdir";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...