59 votes

Détection des nombres négatifs

Je me demandais s'il y avait un moyen de détecter si un nombre est négatif en PHP ?

J'ai le code suivant :

$profitloss = $result->date_sold_price - $result->date_bought_price;

J'ai besoin de savoir si $profitloss est négatif et, si c'est le cas, je dois me faire l'écho de ce fait.

177voto

Mahn Points 5565

Je crois que c'est ce que vous recherchiez :

class Expression {
    protected $expression;
    protected $result;

    public function __construct($expression) {
        $this->expression = $expression;
    }

    public function evaluate() {
        $this->result = eval("return ".$this->expression.";");
        return $this;
    }

    public function getResult() {
        return $this->result;
    }
}

class NegativeFinder {
    protected $expressionObj;

    public function __construct(Expression $expressionObj) {
        $this->expressionObj = $expressionObj;
    }

    public function isItNegative() {
        $result = $this->expressionObj->evaluate()->getResult();

        if($this->hasMinusSign($result)) {
            return true;
        } else {
            return false;
        }
    }

    protected function hasMinusSign($value) {
        return (substr(strval($value), 0, 1) == "-");
    }
}

Utilisation :

$soldPrice = 1;
$boughtPrice = 2;
$negativeFinderObj = new NegativeFinder(new Expression("$soldPrice - $boughtPrice"));

echo ($negativeFinderObj->isItNegative()) ? "It is negative!" : "It is not negative :(";
Notez cependant que eval est une fonction dangereuse. Ne l'utilisez donc que si vous avez vraiment, vraiment besoin de savoir si un nombre est négatif.

-)

174voto

Dormouse Points 2289
if ($profitloss < 0)
{
   echo "The profitloss is negative";
}

Editer : J'ai l'impression que cette réponse est trop simple pour le représentant, alors voici quelque chose qui pourrait vous être utile.

En PHP, nous pouvons trouver la valeur absolue d'un entier en utilisant la fonction abs() fonction. Par exemple, si j'essayais de calculer la différence entre deux chiffres, je pourrais faire ceci :

$turnover = 10000;
$overheads = 12500;

$difference = abs($turnover-$overheads);

echo "The Difference is ".$difference;

Cela produirait The Difference is 2500 .

20voto

Marty Points 22040
if(x < 0)
if(abs(x) != x)
if(substr(strval(x), 0, 1) == "-")

7voto

drewbob Points 942

Vous pouvez vérifier si $profitloss < 0

if ($profitloss < 0):
    echo "Less than 0\n";
endif;

6voto

Tudor Constantin Points 11393
if ( $profitloss < 0 ) {
   echo "negative";
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X