知优码

您现在的位置是:首页 > Php语言 > php基础

php基础

php数组中键key的转换方式详解

2020-04-04php基础
php的数组是重要的数据存储结构,并且php数组的使用非常灵活。所以对于数组的理解也非常重要。尤其是理解数组key的默认转换方式。
php的数组是重要的数据存储结构,并且php数组的使用非常灵活。所以对于数组的理解也非常重要。尤其是理解数组key的默认转换方式。

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. 数组和对象不能被用为键名。否则会报错。

如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。

三、实例

我们定义如下的数组,最终它的键类型会转换为只有字符串或整数类型。
<?php
$array = array(
    1    => "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数组中键的转换方式。

转载请注明出处哦,谢谢