【发布时间】:2014-05-14 16:18:11
【问题描述】:
我有一个重量从 0.05 磅到大约 400 磅不等的定制购物车。我的运费计算器只使用 UPS,它会为我们运送 UPS 的所有物品准确收费。当我们只有小件物品(也很轻)时,我们会运送 USPS。为此,我只是在 UPS 计算器的末尾添加了一条 if 语句:
if($weight>0 && $weight<5){
$handling='7.10';
}
显然,我的购物车重量存储为会话变量 $weight,我的运费通过变量 $handling 发送到贝宝。
这个小小的 if 声明使我的网页忽略了 1 磅到 5 磅之间的所有 UPS 运费,而只收取了 7.50 美元。这正是我想要的,除了我需要它在 0.01 到 5 磅之间工作。现在它使用的 UPS 费率从 0.01 到 0.99 磅。我认为这可能是某种零或有效数字错误。
我的网站是严格的 PHP 和 HTML。请不要建议任何 Jquery/java/等。为了让您了解您的听众,我是一名自学成才的初学者编码员:)
谢谢大家
【问题讨论】:
-
我已经阅读了你的问题 10 次,我无法理解你在问什么。你在哪里得到一个显着的数字错误?你是说当你发送
7.10时,它被发送为7.50吗? -
你能在这里举个例子吗:3v4l.org/mUT72 ?
-
不,我是说低于 1 磅的重量不被视为财产。我的运费计算器中有一个缓冲区,可以将运费垫高几个百分点,以补偿运费索赔和损坏。 7.10 变成 7.50。不要担心 7.10-7.50 的事情。问题是 7.10/7.50 数字不适用于重量低于 1 磅的购物车。
-
您确定 $weight 在某些时候不会转换为整数吗?当你 var_dump($weight) 时,你得到一个浮点数吗?当转换为整数时,0.99 变为 0,并且不满足 $weight > 0 条件。此外,字符串 0,99 可能会变为 0。 编辑:刚刚测试过,当转换为整数 (var_dump((int)'0.99');) 时,'0.99' 将变为零。
-
...这正是您的 IF 语句在将整数与字符串进行比较时所做的事情。
标签: php if-statement paypal