我正在从数组中获取数据。由于某种原因,该数组具有键值,例如[3.3]
我无法从中检索数据。
我有这个数组[3.3] => First Name [3.6] => Last Name[2] => email@example.com
。
当我尝试调用$array[3.3]
它时,它返回 null,但是当我调用时,$array[2]
我收到了电子邮件。有任何想法吗?
引用键值时使用单引号(基本上将其视为字符串,这就是 PHP 可能正在做的事情)
echo $array['3.3'];
来自 php 手册:
键中的浮点数被截断为整数。
所以你试图得到不存在的 $array[3] ,所以你得到 Null
键可以是整数或字符串。如果键是整数的标准表示,它将被解释为这样(即“8”将被解释为 8,而“08”将被解释为“08”)。键中的浮点数被截断为整数。索引和关联数组类型在 PHP 中是相同的类型,既可以包含整数索引,也可以包含字符串索引。
由于浮点数总是会被截断为整数(例如,数组总是将 3.3 解释为 3)我想知道您的数组是否期望字符串而不是浮点数。您是否尝试过 $array["3.3"] 而不是 $array[3.3]?
我猜这与 PHP autocasting 3.3 => float 有关
试试 $array['3.3']
浮点数和key 中的数字字符串被截断为integer。
所以输出这段代码:
$array = [1 => "a", "1" => "b", 1.5 => "c", true => "d"];
print_r($array);
将会:
Array
(
[1] => d
)
使用浮点键将元素添加到数组时我遇到了类似的问题 - PHP 正在覆盖现有值(键 1.2 被 1.5 覆盖等)。
基于此 SO 线程,我将强制转换键添加到字符串:
$options[(string)$value] = new TpValueModelOption($value, $label);