内容目录
php数组定义
php实现该类后:
打印的结果为:
注:打印该对象时,会执行一个循环,循环里去调用offersetGet函数;php手册有相关内容;
数组key和value的限制条件
上面的两个代码打印结果为:
数组的访问
数组间接引用函数示例:
数组元素的删除
打印的结果为:
php中数组与其它类型的转换
转换规则为:
打印结果为:
数组的遍历
php数组的遍历方法有:
执行的结果为:
注:数组的遍历是按存储的顺序进行的,不会对key进行自动排序;
注:没有加引用符号&时,不会出现这种问题;
php数组的内部实现
php数组的底层定义
注:1)nTableSize里存储是数组所能存储的元素的个数,该值在数组初始化时会确定(确定该值后就可以计算出数组的字节数组,从而去申请相应的内存块),当实际的元素个数超过了该值时,会自动扩容;
2)nTableMash(掩码),因为 nTableSize的值为2^n,nTableMash的值的二进制的有效位都是1,如n=8时,nTableMash的值为1111 1111,此时任何值与nTableMash进行与操作,得到的值都会小于nTableMash的值;
注:php里所有变量都是 写时复制 ,即复制某个变量(或将一个变量赋值给另一时),只会将变量的地址赋值给另外的一个,只有当两个变量之中,有一个的值有改变时,才会去真正的申请内存存储;
bucket里的pNext和pLast是用来解决哈希冲突的,哈希冲突即不同的值在哈希后,哈希值相同;
HashTable扩容
注:表示2的14次方,上图中右边的代码运行结果为:
php数组排序的原理
注:数组的排序因要申请额外的n(数组元素的个数)个空间,因此该操作是很费空间的;
php位运算
以下为用一个选项表示多项可能的示例,即用二进制的每一位表示一个可能性;
php输入流
php数组与数据结构