2014-09-02 125 views
-8

我只能保存數組中的第一個值。 我需要將值保存到數組$S$D如何在php中解決這個數學方程

數學計算:

S1 = O*P*M1/Y1 
D1 = N-S1 

S2 = (O-D1)*P*M2/Y2 
D2 = N-S2 

S3 = (O-D1-D2)*P*M3/Y3 
D3 = N-S3 
... 

解決方案:

$S = array(); 
$D = array(); 
$M = array("1"=>30,"2"=>31,"3"=>30); 
$Y = array("1"=>360,"2"=>360,"3"=>360); 
$O = 30000; 
$P = 0.3; 
$N = 10509.74; 

for($i=1; $i<=count($M); $i++){ 
    if($i==1){ 
     $S[1] = $O*$P*$M[1]/$Y[1]; 
     $D[1] = $N - $S[1]; 
    } 
    else{ 

    }  
} 

print_r($S); 
echo "<br /><br />"; 
print_r($D); 

Array ([1] => 750) 
Array ([1] => 9759.74) 

輸出必須是:

Array ([1] => 750, [2] =>522,87 , [3] =>256,34) 

Array ([1] => 9759.74, [2] =>9986,86 , [3] =>10253,40 ) 
+4

第4次還是第5次? – 2014-09-02 03:29:23

+0

看起來像一個任務顯示從OP解決問題的任務。 – 2014-09-02 03:29:24

回答

0

剛組D的第一和不硬編碼的索引,使用$i

$S = array(); 
$D = array(); 
$M = array("1"=>30,"2"=>31,"3"=>30); 
$Y = array("1"=>360,"2"=>360,"3"=>360); 
$O = 30000; 
$P = 0.3; 
$N = 10509.74; 

for($i = 1, $size = count($M); $i <= $size; $i++){ 
    $final_D = 0; 
    // group the D's first (O-D1), (O-D1-D2), ... and so on 
    $temp = array_slice($D, 0, $i); 
    foreach ($temp as $key => $value) { 
     $final_D += $value; 
    } 

    $S[$i] = ($O-$final_D)*$P*$M[$i]/$Y[$i]; 
    $D[$i] = $N - $S[$i]; 
} 

print_r($S); // Array ([1] => 750 [2] => 522.87338333333 [3] => 256.33483458333) 
echo '<br/>'; 
print_r($D); // Array ([1] => 9759.74 [2] => 9986.8666166667 [3] => 10253.405165417) 
+0

謝謝!做得好。 – user3165203 2014-09-02 04:44:35