此操作
$data['can_redeem'] = $data['payments_client']['accumulated']>=floatval($data['charge_limit'])
其中$data['payments_client']['accumulated']
= 7.0,而$data['charge_limit']
=“ 7”表示false
。必须与类型有关,但是在外观上,两个变量都具有相同的值。
答案 0 :(得分:1)
代码
$data['payments_client']['accumulated'] = 7.0;
$data['charge_limit'] = "7" ;
$data['can_redeem'] = $data['payments_client']['accumulated'] >= floatval($data['charge_limit']);
echo ($data['can_redeem']? 'True': 'False');
模拟您的示例,在这种情况下,您将按照注释中的建议将结果显示为“ True”。
但是,一般而言,使用起来更安全:
$data['can_redeem'] = abs($data['payments_client']['accumulated']-floatval($data['charge_limit'])) < 0.0001;
作为条件,因此没有浮点问题的风险。请注意,您可以根据需要将“ 0.0001”更改为“ 0.01”或“ 0.000001”。
如果您仍然收到'False',则需要调试代码以检查$ data ['payments_client'] ['accumulated']和$ data ['charge_limit']中的值。