1

$val 代表我的 sql 中的 1,949.58

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

我弄错了。不知何故,50 比 1,949.58 大,这是因为“,”符号。我需要一些关于如何管理这项权利的建议。谢谢

4

2 回答 2

0

$val被 php 解释为一个字符串。在进行比较时,它会进行字符串比较,因此您不会得到预期的结果。

您需要强制它们为浮点类型。查看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 在解析为浮点数之前从原始字符串中删除“,”。

于 2013-04-03T23:44:08.570 回答