【问题标题】:Specify data type in PHP array在 PHP 数组中指定数据类型
【发布时间】:2013-02-04 03:53:19
【问题描述】:

我有一个包含这个的数组

"postage_cost" => $customer[total_shipping_cost]

当我使用var_dump 时,我得到了

["postage_cost"]=>
  string(5) "34.54"

如何在创建数组时声明这是一个浮点数而不是字符串?我正在将此数组发送到 Web 服务,我担心可能会有一些数据类型混淆。 $customer 结果来自 MySQL 请求。

【问题讨论】:

  • 在相关说明中,不要将货币值存储在浮点数中,因为它们固有的不精确性。
  • 您可能还想考虑使用带有 setter 而不是数组的类。
  • @deceze 你能解释一下吗? api的手册说这个值应该是一个浮点数。什么是不精确?
  • 只要在发送到 API 之前进行转换就可以了。但是你不应该用货币值来做浮点 math

标签: php arrays types


【解决方案1】:
"postage_cost" => (float) $customer['total_shipping_cost']

请注意,我在键中添加了引号,因为我 99.999 % 确定您没有名为 total_shipping_cost常量。 PHP 对此很友好,但如果激活了错误报告,这将是一个注意:未定义常量

【讨论】:

  • 谢谢,问题解决了! (以及所有那些注意:我有未定义的常量......)
【解决方案2】:
"postage_cost" => floatval($customer[total_shipping_cost])

【讨论】:

    【解决方案3】:
    "postage_cost" => $customer['total_shipping_cost'] + 0.0
    

    "postage_cost" => (float) $customer['total_shipping_cost']
    

    请注意,我在 total_shipping_quotes 周围添加了单引号。这不是强制性的,但被认为比原始文本更好的样式;它也稍微快一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 2021-10-19
      相关资源
      最近更新 更多