2009-08-06 7 views
1

私は実際にそれをしました、私はこの数学の方程式を約2年前にしました、そして今私はそれを理解するのに苦労しています。数学でフォルダごとにX個のファイルを取得するにはどうすればよいですか?

Basiclyユーザーが自分のサイトに写真をアップロードするとき、私は、フォルダごとに写真の唯一のX量でそれらのバランスを取ることができるように私はこれを使用しています。

これは私にこの1/1 1/2 1/3 1/4 ---- 1/10 2/1 2/2 2/3のようなものを与えるというように、私は3を行くためにそれを変更する必要があります深いフォルダ、各フォルダには十分な大きさの数は以下の私の関数に入力され、その結果が3になるようならば、それは次の

にその数を増やします番号1-9または1-10の制限を持つ必要があります/ 10個のオブジェクトに到達すると、それは4/1に上がり、次に何千ものオブジェクトが再び移動すると4/2にジャンプします。私がしたいことは、3つの数字/レベルの深さにすることです。3/10/2は3/10に行きます。3/10/10になると4/1/1になります。4/1/2 4三位は10に着いたとき/ 1月3日、それは私はそれが深い2つのレベルでこれを行うために取得するには、2年前に多くの時間を過ごし、I 4/2/1

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

に着いになるだろうだけの種類の幸運、今ではやや混乱して私は戻ってそれで

+0

これは、あなたが常にあなたのコードにコメントをする理由である –

+0

これは本当ですが、私は本当に私はそれを望んでどのように働いていたという幸運を得た、最初から数学の部分を理解していませんでしたあまりにも – JasonDavis

答えて

4

を探しているのは大体これを行うようだ:

それはラインを使用してサブディレクトリ(0..8)に2000枚の写真をパッケージ化します

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

が綴ら:2000は$ xに何回収まるん。これをmodulo 9を使用して9つのサブディレクトリに制限すると、18001rstの写真が再びサブディレクトリ0に取り込まれます。

したがって上限は18001を上限として変更されます。 1..18000からのすべての写真は、ディレクトリ1に入る(+1はちょうどライン

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

いる今、あなたは3つのレベル(擬似コード、このようにそれについて行くことができ1から開始するように間隔をシフトI)は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"; 
} 
+0

、完璧な、はるかに設定も、ありがとう! – JasonDavis

関連する問題