2013-05-14 81 views
0

我有一個數組 $塊 它有4個項目進行的恆定值 A,B,C,d腓司餘與陣列

$blocks["a"] = 20; 
$blocks["b"] = 1000; 
$blocks["c"] = 10000; 
$blocks["d"] = 50000; 

另一個函數返回一個值,可以說358020 (這是通常高,但可下降到幾十

我怎麼會寫,將採取這一價值和回報的多少每個項目的存在陣列功能。

示例輸出someth荷蘭國際集團這樣的:

$output["a"] = 1; 
$output["b"] = 3; 
$output["c"] = 0; 
$output["d"] = 7; 

與最大塊開始,怎麼說塊的許多適合的值,然後將剩餘部分傳遞到下一個最大的,等等...

+0

什麼是358020?這對應於什麼? – brbcoding

+0

此數字是計算遊戲中各個級別之間的訓練點數量,經驗點的函數的結果。問題是要幫助用戶瞭解他們需要進行多少「應用內購買」。 – Deano

回答

1
calculateNumberCredits(25000); 

function calculateNumberCredits($experience) { 

    # The credits we have 
    $credits = array(
     'a' => '10000', 
     'b' => '2000', 
     'c' => '1000', 
    ); 

    # Keep track of the amount needed per credit 
    $timesCreditNeeded = array(); 

    # Start calculating the amount per credit we need 
    foreach($credits as $creditID => $creditAmount) { 

     # 1) Calculate the number of times the amount fits within the amount of experience 
     $times = floor($experience/$creditAmount); 

     # 2) Calculate the remainder of the above division en cache is for the next  calculation 
     $experience = $experience % $creditAmount; 

     # 3) Cache the number of times the credit fits within the experience 
     $timesCreditNeeded[$creditID] = $times; 

    } 

    echo '<pre>'; 
    print_r($timesCreditNeeded); 

    return $timesCreditNeeded; 

} 

// Will return Array ([a] => 2 [b] => 2 [c] => 1) 

我循環訪問系統中的信用點。在這個例子中,學分是從高到低的順序。如果不是這種情況,您應該命令他們獲得理想的結果。

1)對於每個積分,我嘗試查找特定用戶的體驗內積分的最大次數。因爲floatnumber沒有任何意義,所以我們將()分割的結果。

2)當我找到了信貸適合的次數後,我計算了下一次迭代(下一個信用)的餘數。您可以通過計算modulus找到餘數。

3)最後但並非最不重要我緩存信貸適合的次數。

希望這會有所幫助!

+0

出色的工作!爲清晰起見+1 – Deano