从mysql中检索十进制数据并放入一个数组

时间:2012-04-11 15:28:40

标签: php mysql number-formatting

我有一个mysql表,只有一个寄存器,其中price字段属于decimal(6,2)类型,其值为60.35

考虑上面的代码:

$prices = mysql_query("SELECT id, price FROM products");
while ($pr = mysql_fetch_assoc($prices)) {
    $prics[$pr['id']]=$pr['price'];
    echo $pr['price'].' - '.$prics[$pr['id']]."\n";
}

输出不正确:

  

60.35 - 6

正确的是:

  

60.35 - 60.35

我尝试了没有mysql查询的相同情况:

$var = array(60.35,'60.35',60);
$var2[0] = $var[0];
$var2[1] = $var[1];
print_r($var2);

它按预期工作:

Array
(
    [0] => 60.35
    [1] => 60.35
)

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

我认为问题是PHP将第二个float转换为字符串,因为它连接到一个字符串,而它认为第一个浮点数是

编辑 - 这不是完美的,它必须是别的东西

http://codepad.org/UbeJ20Wh

答案 1 :(得分:0)

问题可能是

$prics[$pr['id']]=$pr['price'];

尝试强制类型:

settype($prics[$pr['id']], "float");
$prics[$pr['id']]=$pr['price'];
echo $pr['price'].' - '.$prics[$pr['id']]."\n";

答案 2 :(得分:0)

我通过在使用之前初始化数组var来解决了这个问题:

$prics = array();