028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

PHP中怎么实现数组Key的强制类型转换

这篇文章将为大家详细讲解有关PHP中怎么实现数组Key的强制类型转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联公司2013年至今,先为馆陶等服务建站,馆陶等地企业,进行企业商务咨询服务。为馆陶企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

首先来看下面这样一段代码:


$arr = [
   "1" => "a",
   "01" => "b",
   1 => "aa",
   1.1 => "aaa",
   "0.1" => "bb",
];

var_dump($arr);

// array(3) {
//     [1] =>
//     string(3) "aaa"
//     '01' =>
//     string(1) "b"
//     '0.1' =>
//     string(2) "bb"
// }

咦?我们定义的"1"、1下标的值都变成了1.1的"aaa"了?

没错,PHP中的数组Key值只接受数字和字符串类型,当Key是字符串时,会强制转换为数字类型,遵守类型强制转换的规则。浮点数也是同样的道理,直接转换成了向下取整的整型。

那么"0.1"和"01"为什么还在?首先,"01"不是标准的十进制数值,无法转换成整型,所以"01"还是一个字符串下标,那"0.1"呢?它当然也不是一个标准的十进制数值。这里是违背了字符串转型数字的强制类型转换原则的,在变量的强制转换中,这两种字符串都会被转换为0,但在数组中则不会,这里会是一个坑,也是需要注意的地方。

在PHP官方文档中给出的Key值转换说明如下:

接下来,是笔者曾经做过的一道面试题,和这个类型转换有着非常大的关系,代码如下:


$a      = ['a'];
$a[2]   = 'b';
$a[]    = 'c';
$a['1'] = 'd';

// 以下循环的输出结果是?
foreach ($a as $v) {
echo $v, ',';
}

// 以下循环的输出结果是?
for ($i = 0; $i < count($a); ++$i) {
echo $a[$i], '  ,';
}

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

关于PHP中怎么实现数组Key的强制类型转换就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网站标题:PHP中怎么实现数组Key的强制类型转换
文章起源:http://www.tsicrk.com/article/jsseee.html

其他资讯

让你的专属顾问为你服务

3.6866s