发布时间:2015-05-27 19:32:03作者:知识屋
根据我个人的理解,数组在内存中应该是一片连续的空间。在数组使用前需要在内存中开辟一片规定大小的空白内存,如果声明的大小小于可用的连续内存大小,应该报内存溢出的错误。
对于使用过PHP数组的童鞋应该能够很快速的判断出PHP中的数组并不具备以上特点。一,数组声明无需进行size的确定;二,数组没有使用上限。通过这两点,我们可以判断出,PHP中的数组是链表式的松散结构,而不是连续内存空间。
PHP中的数组可以分为索引数组以及关联数组两种形式。索引数组是一种计数型的数组结构。而关联数组则是map数据结构的一种实现,也就是key-value的结构。
我们通过以下的例子就索引数组和关联数组进行一些讨论。
$arr=array(1,2,3,'name'=>'misko_lee','age'=>22); //定义一个索引、关联混合型数组
for($i=0;$i<count($arr);$i++)
echo $arr[$i]; //这里我们可以看到下标溢出的错误提示
Cout($arr)函数调用返回$arr数组的长度。但是for循环只能够正常输出索引数组。因而,我们可以判断,索引数组与关联数组是两种不同的实现。因而也证明了PHP中的数组是松散型的结构的猜想。
关于索引数组我们还有以下猜想:
$arr[100]=100;
$arr[]=101; //此时$arr[]自动增长的下标为101。
上面的实验证明了我们的猜想,PHP中的数组计数器并不是从数组内存首地址开始计数,而是一种伪计数方式。因此,利用计数器去判断数组大小是完成错误的。
以上言论是个人胡言乱语,具有十分不可靠的因素。欢迎各位学长童鞋指出错误。好人一生平安。
最后PS一句:数组使用foreach遍历后如果不是需求原因,请将数组指针利用reset()函数进行遍历重置
如何对PHP文件进行加密方法 PHP实现加密的几种方式介绍
php生成圆角图片的方法 电脑中php怎么生成圆角图片教程
用PHP构建一个留言本方法步骤 php怎么实现留言板功能
php中三元运算符用法 php中的三元运算符使用说明
php文件如何怎么打开方式介绍 php文件用什么打开方法
PHP怎么插入数据库方法步骤 php编程怎么导入数据库教程
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
PHP 获取远程文件大小的3种解决方法 如何用PHP获取远程大文件的大小
20个实用PHP实例代码 php接口开发实例代码详细介绍
如何架设PHP服务器方法步骤 怎么搭建php服务器简单教程