php数组数据结构 php 数组( 二 )


示例2:关联数组
?php
header("Content-type:text/html;charset=utf-8");
$arr=array(1=1,"a"=3.5,2=2,"b"=0,"c"="blue");
var_dump($arr);
?
?
说明:关联数组的下标(键名)由数值和字符串混合的形式组成,如果一个数组中有一个键名不是数字 , 那么这个数组就是关联数组 。
php中的数字
在php中,数字可分为integer(整型)和float(浮点型)
类型 功能
integer(整型) 整型包含所有的整数,可以是正数也可以是负数
float(浮点型) 浮点型也是用来表示数字的,与整型不同除了可以表示整数外它还可以用来表示小数和指数
1)整型
在 PHP 中,整型变量称为 integer 或 int 类型 , 用来表示一个整数 , 整型的规则如下所示:
整型必须至少有一个数字(0~9);
整型不能包含逗号或空格;
整型不能包含小数点;
【php数组数据结构 php 数组】整型可以是正数或负数 。
整型的取值范围必须介于 -2E31 到 2E31 之间,可以用三种格式来表示,即十进制、十六进制(以 0x 为前缀)和八进制(以 0 为前缀) 。
?php
$x = 5985;// 定义一个整型数据类型的变量
var_dump($x);// 输出此变量
$x = -345;
var_dump($x);
$x = 0x8C;//十六进制数字
var_dump($x);
$x = 047;//八进制数字
var_dump($x);
?
?
注意 , 在 PHP7 版本中,含有十六进制字符的字符串不再被视为数字 , 而是当作普通的字符串 。
2)浮点型
浮点型在 PHP 中被称为 float 类型,也可称为实数 , 可以用来存储整数和小数,有效的取值范围是 1.8E-308 到 1.8E+308 之间 。浮点数的精确度比整型数据类型要高 。
?php
$num1 = 10.365;
$num2 = 2.4e3;
$num3 = 8E-5;
var_dump($num1, $num2, $num3);
?
?
读到这里,这篇“php数组的元素可不可以是数字”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道 。
PHP 数组的底层实现PHP 数组的底层主要是通过 HashTable 实现,HashTable 通过映射函数或者散列函数将 String Key 转换成一个普通的数字下标,然后再将 Value 值存储到下标对应的数组元素中
HashTable 主要包含两部分:1.存储元素的数组 2.散列函数或者映射函数
随机访问
如果我们指定一个 Key=Value 的映射关系,Key 是一个 String 类型的,则先通过 Time 33 算法将 String 转换成一个 Int 整型,然后再通过 PHP 里面特定的散列算法映射成 Bucket 数组中的一个下标,将 Value 值存储到对应的下标元素中,当我们通过 Key 访问数组元素时,只需要再通过相同的算法计算出对应的 Key,就能实现随机访问数组元素
顺序访问
存储在 HashTable 中的数组是无序的 , 但是 PHP 中的数组是有序的,为了实现 HashTable 的有序性,PHP 引入了一个中间映射表,该表是一个大小和 Bucket 数组相同的数组,数组中存放的是整形数据,主要用于存放元素实际存储的 Value 的下标值 , 当引入中间映射表之后,Bucket 中的数据是有序的,而中间映射表中的数据是无序的,当我们顺序访问的时候只需要遍历 Bucket 中的数据即可
Hash 冲突
PHP 解决 Hash 冲突采用的是链地址法 , 将出现冲突的 Bucket 串成链表,这样通过中间映射表映射出来的就不再是一个元素而是一个链表 , 通过散列函数定位到对应的 Bucket 链表时,需要遍历链表,逐个对比 key 值 , 直至找出对应的目标值

推荐阅读