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