0

我有一个最小交易金额的常数。

define( 'MINIMUM_AMOUNT', 100.00 );

我有一个从数据库中提取事务并为转移做准备的函数。我要求交易总额大于最小值才能继续。像这样:

foreach( $merchant as $merch ) {

     ......

     foreach( $transactions as $trans ) {
          $trans_total = number_format( $trans_total + $trans->amt, 2 );
     }

     if( $trans_total < MINIMUM_AMOUNT )
          continue;

     .....

}

显然缺少一些代码,但我想你明白这里发生了什么。我遇到的问题是,当我将计算的总数与常数进行比较时,它返回为true,即使不是,因此continue被触发并且脚本的其余部分不运行。

我已经确认 $trans_total 多次大于 MINIMUM_AMOUNT,尝试了各种金额,甚至用于var_dump()检查type变量的值。我无法弄清楚问题是什么。

有任何想法吗?如果有帮助,我将在 LAMP 环境中运行最新版本的 PHP。

笔记:

我已经尝试过将两者都进行类型转换,但没有运气。

4

1 回答 1

0

number_format()是问题所在。这会返回 a string,这会导致比较出现问题。由于字符串中的逗号,将之后的类型转换$trans_total为 afloat不起作用。

一起删除number_format()所有的伎俩。

感谢@Pj Dietz。

于 2013-10-07T20:10:11.253 回答