如何为变量赋予负值?

时间:2018-08-22 10:29:05

标签: php

我正在尝试执行某些功能,但是,当我将$variable的-ve值放入时,会得到白页结果。看起来此变量具有-ve值:$long_total_profit_loss = "-900";

$long_total_profit_loss = "-900";
$short_sell_total_profit_loss = "-600";

//CONCLUTION
if(($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss>0)){

    echo "long has higher in profit";
}elseif (($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss < 0)){

    echo "long has higher loss";
}elseif (($long_total_profit_loss < $short_sell_total_profit_loss) && ($long_total_profit_loss > 0)){

    echo "short has higher in profit";
}
elseif (($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss < 0)){

    echo "short has higher loss";
}

4 个答案:

答案 0 :(得分:3)

我建议您以不同的方式构造您的条件(使用嵌套的if语句),这将使您有更好的概览和可读性,从而您不会忘记特殊情况。

$long_total_profit_loss = -900;
$short_sell_total_profit_loss = -600;

if($long_total_profit_loss > $short_sell_total_profit_loss) {
   if($long_total_profit_loss > 0) {
     echo "long has higher in profit";
   }
   else { // $long_total_profit_loss<0 or =0
     echo "short has higher loss";
   }
}
else { // $long_total_profit_loss < $short_sell_total_profit_loss or equal
   if($short_sell_total_profit_loss > 0) {
      echo "short has higher in profit";
   }
   else {  // $short_sell_total_profit_loss<0 or =0
      echo "long has higher loss";
   }
}

// output: short has higher loss

您可以/应该扩展此范围以捕获当这些值彼此相等且等于0时的情况。

EDIT
交换了“ 具有更高的损失”和“ 具有更高的损失”的措辞,这得益于@Rafael

答案 1 :(得分:1)

欢迎。 主要的问题是,所有这些陈述都没有得出正确的结论。 (因此您将永远不会回声) 您错过了一个(-900小于-600):

elseif(($long_total_profit_loss < $short_sell_total_profit_loss) && ($long_total_profit_loss < 0)){
    echo "your evalutation";   
}

@Dale在评论中指出

  

使用字符串不是问题,php(正确或错误)将   为您转换

我仍然建议将这些变量声明为数字。
最后的代码应该是这样的:

<?php
$long_total_profit_loss = -900;
        $short_sell_total_profit_loss = -600;

        //CONCLUTION
        if(($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss>0)){

            echo "long has higher in profit";
        }elseif (($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss < 0)){

            echo "long has higher loss";
        }elseif (($long_total_profit_loss < $short_sell_total_profit_loss) && ($long_total_profit_loss > 0)){

            echo "short has higher in profit";
        }elseif(($long_total_profit_loss < $short_sell_total_profit_loss) && ($long_total_profit_loss < 0)){

                        echo "your evalutation";

        }

答案 2 :(得分:1)

据我所知,您没有考虑到几种情况。

<?php

$long_total_profit_loss = "-900";
$short_sell_total_profit_loss = "-600";

//CONCLUTION
if (($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss > 0)) {

    echo "long has higher in profit";
} elseif (($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss < 0)) {

    echo "long has higher loss";
} elseif (($long_total_profit_loss < $short_sell_total_profit_loss) && ($long_total_profit_loss > 0)) {

    echo "short has higher in profit";
} elseif (($long_total_profit_loss > $short_sell_total_profit_loss) && ($long_total_profit_loss < 0)) {

    echo "short has higher loss";
} else {
    echo "Whoops I didn't think about this one!";
}

我只添加了一个额外的东西来捕捉您未考虑的任何东西,希望您可以接受并运行它

答案 3 :(得分:1)

我要写一个答案,因为我看到人们错过了所显示信息的重点。

$long_total_profit_loss = -900;
$short_sell_total_profit_loss = -600;

在这种情况下,$ long小于$ short,这意味着如果您想知道:

  • 如果$ long的利润高于$ short,则$ long必须大于$ short(此陈述(是正确的)):

    if ($long... > $short... && $long > 0) echo 'Long has higher profit than short

  • 如果$ long的损失高于$ short,则$ long必须小于$ short(此陈述是错误的不正确的):

    if ($long... < $short...) echo 'Long has higher loss than short

  • 如果$ short的利润高于$ long,则$ short必须大于$ long(此陈述(是正确的)):

    if ($long... < $short... && $short > 0) echo 'Short has higher profit than long

  • (最后),如果$ short的亏损高于$ long,则$ short必须小于$ long(此声明是正确的)。 / p>

    if ($long... > $short...) echo 'Short has higher loss than long

主要是:

Short has higher loss than long 与代码中的Long has higher profit than short等价

它们两个都比较小于,因此队列中的最后一个原因将永远不会被触发。要求获利的人应具有大于零的条件。

最后一句话,您是对的,我敢肯定,您知道-900小于-600,但是从您的第二句话来看,它看起来并不像。抱歉。 :)

[编辑]

@Jeff有一点,利润与大于零有关。

[Edit2]

Jeff保留了您在代码中的错误,尽管他的解决方案具有最佳的方法/可读性IMO。

我在这里固定,希望他会更新他的答案,以便您选择他的(不属于我)。

$long_total_profit_loss = -900;
$short_sell_total_profit_loss = -600;

if($long_total_profit_loss > $short_sell_total_profit_loss) {
   if($long_total_profit_loss > 0) {
     echo "long has higher in profit";
   } else { // $long_total_profit_loss<0 or =0
     echo "short has higher loss";
   }
}
else { // $long_total_profit_loss < $short_sell_total_profit_loss or equal
   if($short_sell_total_profit_loss > 0) {
      echo "short has higher in profit";
   } else {  // $long_total_profit_loss<0 or =0
      echo "long has higher loss";
   }
}

在这里测试:https://3v4l.org/PY0P2