如何通过数学获得每个文件夹的X量文件?

时间:2009-08-06 13:35:49

标签: php math

我实际上已经完成了,大约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年前让它做到这一点有两个层次,我只是很幸运,现在回头看它有点混乱

1 个答案:

答案 0 :(得分:4)

似乎大致如此:

它将使用行

将2000张图片打包到子目录(0..8)中
 $sdir = ceil($x/2000) % 9

拼写:2000年适合$ x的次数。当您使用模9将此限制为9个子目录时,您将再次将18001rst照片放入子目录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";
}