【问题标题】:PHP if statement not working on all significant digitsPHP if 语句不适用于所有有效数字
【发布时间】: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


【解决方案1】:

你为什么使用字符串?试试这个

if($weight>0 && $weight<=5)
{            
    $handling=7.10;
}

【讨论】:

  • 这从我的网页中取出了几个字符的代码,但没有解决问题:(
【解决方案2】:

因为你不能有负权重,所以使用:

if( $weight < 5)

这应该可以解决您的问题。

我认为,问题的最可能原因首先是重量作为字符串传递。

【讨论】:

  • 我使用零重量免费送货(所以我需要它来排除 0)。我会进一步研究字符串的事情。
  • 我去掉了字符串标签(双')......没有变化。它会影响我存储会话变量的任何地方吗?像这样? $_SESSION['weight'] = $weight;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多