PHP - 当键包含小数位时,如何检查数组键是否存在?
PHP - How to check array key exists when key include decimal place?
我想知道是否可以提供一些帮助来理解为什么 array_key_exists 在使用小数位时找不到我的密钥?
<?php
$arr[1] = 'test';
$arr[1.1] = 'anothertesty';
foreach ($arr as $key => $value) {
if (array_key_exists($key, $arr)) {
echo 'found' . $key;
}
}
谁能告诉我正确的处理方法是什么。我需要找到 1.1 数组键。
如果你使用 float 作为键,它会自动转换为 int
查看以下文档
https://www.php.net/manual/en/language.types.array.php
The key can either be an int or a string. The value can be of any type.
Additionally the following key casts will occur:
[...]
Floats are also cast to ints, which means that the fractional part will be truncated. E.g. the key 8.7 will actually be stored under 8.
意思是,你的 float 被转换为 int 并且
$arr[1.1] = 'test';
现在可以通过
访问
echo $arr[1]
此外,在您的情况下,第一个作业
$arr[1] = 'test';
将通过调用
立即被anothertesty
覆盖
$arr[1.1] = 'anothertesty';
这就是为什么最后您会发现 1
作为数组中唯一的键
您可以使用字符串作为键,这样您就不会将 float 转换为 int。需要比较的时候可以转回float:
<?php
$arr['1'] = 'test';
$arr['1.1'] = 'anothertesty';
foreach ($arr as $key => $value) {
if (array_key_exists($key, $arr)) {
echo 'found' . $key;
}
}
我想知道是否可以提供一些帮助来理解为什么 array_key_exists 在使用小数位时找不到我的密钥?
<?php
$arr[1] = 'test';
$arr[1.1] = 'anothertesty';
foreach ($arr as $key => $value) {
if (array_key_exists($key, $arr)) {
echo 'found' . $key;
}
}
谁能告诉我正确的处理方法是什么。我需要找到 1.1 数组键。
如果你使用 float 作为键,它会自动转换为 int
查看以下文档
https://www.php.net/manual/en/language.types.array.php
The key can either be an int or a string. The value can be of any type.
Additionally the following key casts will occur:
[...]
Floats are also cast to ints, which means that the fractional part will be truncated. E.g. the key 8.7 will actually be stored under 8.
意思是,你的 float 被转换为 int 并且
$arr[1.1] = 'test';
现在可以通过
访问echo $arr[1]
此外,在您的情况下,第一个作业
$arr[1] = 'test';
将通过调用
立即被anothertesty
覆盖
$arr[1.1] = 'anothertesty';
这就是为什么最后您会发现 1
作为数组中唯一的键
您可以使用字符串作为键,这样您就不会将 float 转换为 int。需要比较的时候可以转回float:
<?php
$arr['1'] = 'test';
$arr['1.1'] = 'anothertesty';
foreach ($arr as $key => $value) {
if (array_key_exists($key, $arr)) {
echo 'found' . $key;
}
}