【问题标题】:Associative Array Key Casting Float String关联数组键转换浮点字符串
【发布时间】:2013-06-20 13:55:44
【问题描述】:

在我的代码中,我生成了一个关联数组,其中键为浮点数,但是 PHP 文档指出,当它们成为数组中的键时,它们应该被强制转换为整数。相反,它们被转换成字符串(这对我来说实际上更好,所以我没有抱怨)。

问题在于,当我尝试使用浮点数作为键值访问这些键时,它只会将具有 0.5 的浮点数转换为整数并在数组中创建一个新条目。似乎是一种奇怪的行为。

例子:

var_dump( $array );

输出:

array(9) {
[0] =>
int(0)
[1.25] =>
int(0)
[2.5] =>
int(0)
....}

当我尝试像这样访问值 2.5 时,

array[2.5]++;

数组中的一个新条目位于array[2] 但是,如果我尝试访问 array[1.25]++; 的数组 我成功地将 1 添加到 key 处的值:1.25

有什么想法吗?

【问题讨论】:

  • 来自文档:Floats are also cast to integers, which means that the fractional part will be truncated. E.g. the key 8.7 will actually be stored under 8.
  • array[1.25]++ 不起作用,就像 array[2.5]++ 一样。 array["1.25"]++ 会。你确定你尝试过给定的代码吗?
  • 是的,字符串工作了,谢谢!

标签: php casting associative-array


【解决方案1】:

我会一直坚持使用字符串:

$a = array(
    '0' => 0,
    '1.25' => 0,
    '2.5' => 0
);

$a['2.5']++;
echo $a['2.5'] . "\n";
var_dump($a);

输出是:

1
array(3) {
  [0]=>
  int(0)
  ["1.25"]=>
  int(0)
  ["2.5"]=>
  int(1)
}

【讨论】:

  • 是的,谢谢!我会给你+1,但不幸的是我太新了
猜你喜欢
  • 2016-07-21
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 2012-06-10
  • 1970-01-01
相关资源
最近更新 更多