将$price分成部分付款(输出数量超过1000的问题)
Devide $price into partial payment (output issues over 1000 in amount)
大家晚上好
我完成了所有编码和广告,我将展示客户将付款分成 6 个月的可能方式。一切都很好,除了当数量超过 1000 时我的新价格输出有问题,我猜是因为 space?!在 1 000...?
这是代码:
Pay over 6 months: <?php if ($price_calculate['price_wo_discount']>0) echo round( ($price_calculate['price_wo_discount'])*0.16); ?>
如果您尝试在 PHP、
中执行类似的操作
echo round( '1 000' * 0.16);
你会得到 Notice: A non well formed numeric value encountered in ...
。这是因为 PHP 无法安全地将字符串转换为适当的数值。它神奇地将字符串转换为 0
并发出通知。这就是你得到 0
输出的原因。
理想情况下,您需要从数字字符串中删除所有空格和逗号,然后可能使用 is_numeric 函数来确定您的字符串是否实际上是数字,然后执行 round
.
您 if ($price_calculate['price_wo_discount'] > 0
块中的隐式转换也可能会导致一些副作用。在 PHP 中考虑这一点:
var_dump('1 is number' > 0); //outputs true
我的建议:首先使用 值对象 验证您的输入。
大家晚上好
我完成了所有编码和广告,我将展示客户将付款分成 6 个月的可能方式。一切都很好,除了当数量超过 1000 时我的新价格输出有问题,我猜是因为 space?!在 1 000...?
这是代码:
Pay over 6 months: <?php if ($price_calculate['price_wo_discount']>0) echo round( ($price_calculate['price_wo_discount'])*0.16); ?>
如果您尝试在 PHP、
中执行类似的操作echo round( '1 000' * 0.16);
你会得到 Notice: A non well formed numeric value encountered in ...
。这是因为 PHP 无法安全地将字符串转换为适当的数值。它神奇地将字符串转换为 0
并发出通知。这就是你得到 0
输出的原因。
理想情况下,您需要从数字字符串中删除所有空格和逗号,然后可能使用 is_numeric 函数来确定您的字符串是否实际上是数字,然后执行 round
.
您 if ($price_calculate['price_wo_discount'] > 0
块中的隐式转换也可能会导致一些副作用。在 PHP 中考虑这一点:
var_dump('1 is number' > 0); //outputs true
我的建议:首先使用 值对象 验证您的输入。