php的数组是重要的数据存储结构,并且php数组的使用非常灵活。所以对于数组的理解也非常重要。尤其是理解数组key的默认转换方式。
一、php数组中key和value的可接受类型
1. key 只会是 整数(integer) 或者 字符串(string),如果是其他类型会进行数据类型转换。
2. value 可以是任意类型。
二、数组的键(key)的类型转换
key会有如下的强制转换:
1. 整数型字符串会转为整数。包含有合法整型值的字符串会被转换为整型。例如键名 “8” 实际会被储存为 8。但是 “08” 则不会强制转换,因为其不是一个合法的十进制数值。
2. 浮点数转整数。浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
3. 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
4. Null 会被转换为空字符串,即键名 null 实际会被储存为 “”。
5. 数组和对象不能被用为键名。否则会报错。
如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。
三、实例
我们定义如下的数组,最终它的键类型会转换为只有字符串或整数类型。
"a", //整数 key
"1" => "b", //整数型字符串 key
1.5 => "c", //浮点数 key
true => "d", //布尔型 key
"abc" =>"e", //字符串 key
NULL => "f", //Null型 key
"1.5"=>"g", //字符串 key
"00"=>"h", //字符串 key
"0"=>"i", //整数型字符串 key
);
var_dump($array);
最终数组结构为:
array(6) {
[1] =>
string(1) "d"
'abc' =>
string(1) "e"
'' =>
string(1) "f"
'1.5' =>
string(1) "g"
'00' =>
string(1) "h"
[0] =>
string(1) "i"
}
由于键 1,”1″,1.5,true 他们最终都转为了是整数1,导致最后定义的同名键覆盖之前的定义。所以key为1的值最终为d。
相信理解了上面的实例就完整理解了php数组中键的转换方式。
转载请注明出处哦,谢谢
如若转载,请注明出处:https://www.javaidea.cn/article/8094.html