2013-05-25 68 views
0

我試圖學習PHP和作爲一個小項目,我想編號嘗試做一個Arbitrage calculator,其基本工作原理是基於這個Google Spreadsheet建立它。清潔劑仲裁計算器在PHP

我做了一個開始,但我覺得它有點「骯髒」的工作,可能會變得更冷靜,但我不知道如何改善它,任何想法。

這是我的代碼(藉口echo塊這僅僅是爲我在代碼轉輪輸出,在實踐中,整個if塊將是一個函數內返回其可以是echo「在視圖編出的陣列)

$number1 = 1.2; 
$number2 = 8; 

$total_stake = 100; 


     if ($total_stake/$number1 > 0 && $total_stake/$number2 > 0) { 

      $num1_stake = $total_stake/$number1; 
      $num2_stake = $total_stake/$number2; 

      $num1_profit = $total_stake - $num1_stake; 
      $num2_profit = $total_stake - $num2_stake; 


      echo " 
      //// NUMBER 1 //// 
      Num 1 Stake - $num1_stake 
      Num 1 Profit - $num1_profit 

      //// NUMBER 2 //// 
      Num 2 Stake - $num2_stake 
      Num 2 Profit - $num2_profit 
      "; 



     } else { 
      echo "There is no arb opportunity"; 
     } 
+0

對我來說似乎很乾淨,你有什麼想法讓自己更清潔? –

+0

這不應該被移動到'代碼審查'? – nibra

回答

0

的唯一的事情在我的腦海上來就是讓那些2線計算在一行 如下:

$num1_profit = $total_stake - ($num1_stake = $total_stake/$number1); 
$num2_profit = $total_stake - ($num2_stake = $total_stake/$number2); 

我不知道這是否可以被定義爲「清潔」。

0

你的代碼看起來很乾淨,但有兩個小問題。

  1. 如果$number1一個或$number2是0,你就會「被零除」的錯誤得到。

  2. 您正在計算兩次商。您可以通過計算quotiont if語句解決這個問題:

    $number1 = 1.2; 
    $number2 = 8; 
    
    $total_stake = 100; 
    
    if ($number1 != 0 && $number2 != 0) { 
        $num1_stake = $total_stake/$number1; 
        $num2_stake = $total_stake/$number2; 
    
        if ($num1_stake > 0 && $num2_stake > 0) { 
         $num1_profit = $total_stake - $num1_stake; 
         $num2_profit = $total_stake - $num2_stake; 
    
         echo " 
         //// NUMBER 1 //// 
         Num 1 Stake - $num1_stake 
         Num 1 Profit - $num1_profit 
    
         //// NUMBER 2 //// 
         Num 2 Stake - $num2_stake 
         Num 2 Profit - $num2_profit 
         "; 
    
        } else { 
         echo "There is no arb opportunity"; 
        } 
    } 
    

如果你要處理的木樁可變數量,把它們放進一個數組。

$numbers  = array(1.2, 8); 
$total_stake = 100; 

calculate/$total_stake, $numbers); 

function calculate($total_stake, $numbers) 
{ 
    $profit = array(); 
    foreach ($numbers as $key => $number) { 
     if ($number == 0) { 
      echo 'Number cannot be 0'; 
      return; 
     } 
     stake = $total_stake/$number; 

     if ($stake > 0) { 
      $profit[$key] = $total_stake - $stake; 

      printf("//// NUMBER %1$d ////\nNum %1$d Stake - %2$f\nNum %1$d Profit - %3$f\n\n", 
       $key, 
       $stake, 
       $profit[$key] 
      ); 
     } 
     if (empty($profit)) { 
      echo "There is no arb opportunity"; 
     } 
    } 
}