0

我正在尝试学习 php,作为一个小项目,我想尝试制作一个套利计算器,因为它的基本工作原理是基于这个Google 电子表格构建的。

我已经开始了,但我觉得它有点“肮脏”的工作,可能更光滑,但我不知道如何改进它,任何想法。

这是我的代码(对不起,echo这只是我在 Code Runner 中的输出的块,实际上整个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";
        }
4

2 回答 2

0

我想到的唯一一件事就是将这两条计算线放在一行中,如下所示:

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

我不知道它是否可以定义为“更清洁”。

于 2013-05-25T20:57:41.930 回答
0

您的代码看起来很干净,但有两个小问题。

  1. 如果其中一个$number1$number2为 0,您将收到“除以零”错误。

  2. 你计算商两次。您可以通过计算 语句的引号来解决此问题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";
        }
    }
}
于 2013-05-27T11:55:36.697 回答