1

$val は、SQL の 1,949.58 を表します

 $sold = 50;
    if ($val>$sold){
    echo "true";
    }
    else
    {
    echo "false";
    }

私は偽になります。どういうわけか 50 は 1,949.58 より大きく、これは「,」記号のためです。この権利を管理する方法についてアドバイスが必要です。どうも

4

2 に答える 2

0

$valphp によって文字列として解釈されます。比較を行うときは、文字列の比較を行うため、期待する結果が得られません。

それらを強制的に浮動小数点型にする必要があります。http://php.net/manual/en/function.floatval.php 特にその関数に関するコメントを見てください。

このようなものが動作するはずです:

function floatvalue($value) { 
     return floatval(preg_replace('#^([-]*[0-9\.,\' ]+?)((\.|,){1}([0-9-]{1,2}))*$#e', "str_replace(array('.', ',', \"'\", ' '), '', '\\1') . '.\\4'", $value)); 
} 
于 2013-04-03T23:41:03.473 に答える
0

これらの値を文字列ではなく浮動小数点数に変換する必要があります。現在、数値比較ではなく文字列比較を行っています。以下は、これらの文字列を浮動小数点値に変換します。

$val = parseFloat('1,949.58'.replace(/\,/g,""))
$sold = parseFloat('50')

.replace は、Float に解析される前に元の文字列から「,」を削除します。

于 2013-04-03T23:44:08.570 に答える