-2

関数で価格を計算するためのこのコードを入れましたgetPrecio

価格が 1 未満の商品 (0.2 や 0.02 など) の場合、この関数は機能しません。

なんで?

これはそのコードです:

function getPrecio($p)
{
    if($p > 0 && $p <= 1) return $p*1.99;
}

そのPHPコード。それがうまくいかないと私が言うとき、それは計算された価格を修正していないということです.

これを試して、計算しないでください

    function getPrecio($p)
{
    $floatPrice = floatval($p);
    if($floatPrice  > 0 && $floatPrice  <= 1) return $floatPrice *1.99;
    //if($p > 0 && $p <= 1) return $p*1.99; 
    elseif($p > 1 && $p <= 3) return $p*1.95;

更新されたコード

    function getPrecio($p)
{
    $floatPrice = floatval($p);
    $floatCalculatedResult = 0;
    if (between($floatPrice, 0, 1)) {
        $floatCalculatedResult = $floatPrice * 1.99;
    } else if (between($floatPrice, 1, 3)) {
        $floatCalculatedResult = $floatPrice * 1.95;
    }   else if (between($floatPrice, 3, 5)) {
        $floatCalculatedResult = $floatPrice * 1.90;
    }   else if (between($floatPrice, 5, 10)) {
        $floatCalculatedResult = $floatPrice * 1.70;
    }   else if (between($floatPrice, 10, 20)) {
        $floatCalculatedResult = $floatPrice * 1.60;
    }   else if (between($floatPrice, 20, 30)) {
        $floatCalculatedResult = $floatPrice * 1.56;
    }   else if (between($floatPrice, 30, 50)) {
        $floatCalculatedResult = $floatPrice * 1.52;
    }   else if (between($floatPrice, 50, 80)) {
        $floatCalculatedResult = $floatPrice * 1.49;
    }   else if (between($floatPrice, 80, 100)) {
        $floatCalculatedResult = $floatPrice * 1.45;
    }   else if (between($floatPrice, 100, 130)) {
        $floatCalculatedResult = $floatPrice * 1.40;
    }   else if (between($floatPrice, 130, 200)) {
        $floatCalculatedResult = $floatPrice * 1.39;
    }   else if (between($floatPrice, 200, 250)) {
        $floatCalculatedResult = $floatPrice * 1.35;
    }   else if (between($floatPrice,250, 500)) {
        $floatCalculatedResult = $floatPrice * 1.32;
    }   else if (between($floatPrice, 500, 700)) {
        $floatCalculatedResult = $floatPrice * 1.28;
    }   else if (between($floatPrice, 700, 900)) {
        $floatCalculatedResult = $floatPrice * 1.26;
    }   else if (between($floatPrice, 900, 1000)) {
        $floatCalculatedResult = $floatPrice * 1.25;
    }   else if (between($floatPrice, 1000, 10000)) {
        $floatCalculatedResult = $floatPrice * 1.15;
    }
    return $floatCalculatedResult;
}

function between($var, $from, $to)
{
    return ($var > $from && $var <= $to);
}

更新、0.02 から 0.02 のフィールド CSV を変更すると、コードが機能します。ただし、0,02 で作業するには正しいコードが必要です

4

2 に答える 2

1

おそらく$pintに変換されるので、0.2または0.02は0になります。floatval($p)

function getPrecio($p)
{
    $floatPrice = floatval($p);
    if($floatPrice  > 0 && $floatPrice  <= 1) return $floatPrice *1.99;
}

更新された回答

これは意図したとおりに機能するはずです。

function getPrecio($p)
{
    $floatPrice = floatval($p);
    $floatCalculatedResult = 0;
    if (between($floatPrice, 0, 1)) {
        $floatCalculatedResult = $floatPrice * 1.99;
    } else if (between($floatPrice, 1, 3)) {
        $floatCalculatedResult = $floatPrice * 1.95;
    }
    return $floatCalculatedResult;
}

function between($var, $from, $to)
{
    return ($var > $from && $var <= $to);
}

between関数で範囲を導入し続けることができます

于 2016-04-29T06:44:44.523 に答える