Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用键值中包含句点的数组_Php_Arrays_Period - Fatal编程技术网

Php 使用键值中包含句点的数组

Php 使用键值中包含句点的数组,php,arrays,period,Php,Arrays,Period,我正在从数组中获取数据。由于某种原因,数组中有一些键值,如[3.3],我在从中检索数据时遇到了问题 我有这个数组[3.3]=>名字[3.6]=>姓氏[2]=>email@example.com 当我尝试调用$array[3.3]时,它返回null,但当我调用$array[2]时,我收到了电子邮件。有什么想法吗?在引用键值时使用单引号(基本上将其视为字符串,这是PHP可能正在做的事情) 我想它与PHP自动播放3.3=>float有些关系 试试php手册中的$array['3.3']: 键中的浮点被

我正在从数组中获取数据。由于某种原因,数组中有一些键值,如
[3.3]
,我在从中检索数据时遇到了问题

我有这个数组
[3.3]=>名字[3.6]=>姓氏[2]=>email@example.com


当我尝试调用
$array[3.3]
时,它返回null,但当我调用
$array[2]
时,我收到了电子邮件。有什么想法吗?

在引用键值时使用单引号(基本上将其视为字符串,这是PHP可能正在做的事情)


我想它与PHP自动播放3.3=>float有些关系

试试php手册中的$array['3.3']

键中的浮点被截断为整数

因此,您试图获取不存在的$array[3],因此得到Null

键可以是整数或字符串。如果一个键是一个整数的标准表示形式,它将被解释为这样(即,“8”将被解释为8,而“08”将被解释为“08”)键中的浮点被截断为整数。索引数组和关联数组类型在PHP中是相同的类型,可以包含整数和字符串索引

由于浮点总是被截断为整数(例如,数组总是将3.3解释为3),我想知道数组是否需要字符串而不是浮点。您是否尝试过使用$array[“3.3”]而不是$array[3.3]

键中的浮点数字字符串被截断为整数

因此,请输出以下代码:

$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);

“8”将被解释为8。“值得注意的是,在INT使用32位的平台上,当字符串是需要超过32位的整数的标准表示形式(例如“3206519370”)时,它将保留为字符串键,并且不会转换为INT(这将导致溢出)。有一件事:如果你的'3.0'碰巧在一个变量中(即,
$x='3.0';
),而你正试图做
$myarr[$x]=“哇!”
,你就需要做一些类似
$myarr[“{$x}”=“哇!”
。只要我的5美分…对于被变量引用的键,这对我来说是有效的:
$myarr[“$x”]
我喜欢php,但这是有史以来最愚蠢的事情之一。
$options[(string)$value] = new TpValueModelOption($value, $label);