关于PHP中数组模型的一点猜想

关于PHP中数组模型的一点猜想
作者:53期 李雄飞



根据我个人的理解,数组在内存中应该是一片连续的空间。在数组使用前需要在内存中开辟一片规定大小的空白内存,
如果声明的大小小于可用的连续内存大小,应该报内存溢出的错误。
对于使用过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()函数进行遍历重置




--------------------------------------------end--------------------------------------------
以后将和大家一起讨论离散数学中二维数组的应用,软件设计中的布尔数组的应用。

转载于:https://www.cnblogs.com/miskolee/archive/2012/12/02/2798597.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值