疑问
- PHP中基本所有的东西都是哈希????????
- 如果数组的底层实现是哈希,那如何保证顺序性???
如果是顺序存储的,那如何保证快速查找???
数组定义
- PHP中的数组可以包含不同类型的元素。每个元素都通过一个特殊的标识符进行区分,成为key。在PHP的数组中,保存的是一个个实体,每个实体包含两项:key, value。这些key可以是数值(numerical)或者关联(associative)。
- 对于使用数值索引的数组,数组越界的时候会提示PHP Notice: Undefined offset: 4 in /home/liu/index.php on line 3。
- 对于使用关联索引的数组,当使用不存在的key的时候,会提示PHP Notice: Undefined index: c in /home/liu/index.php on line 3。
- 定义一个数值键的数组:array("hello", "world"),或者array(1=>"hello", 2=>"world")。数值键的数组和关联键的数组都有一个统一的声明方式。
无论是数值键数组还是关联键数组,都依赖一种称为“数组指针”的特性。
数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素,默认指向数组中第一个元素,通过移动或者改变指针的位置可以访问数组中的任意元素。
指针位置非法之后,不能做相对移动(next, prev),只能做绝对移动(reset, end)。
并不能直接操作数组指针,而是通过内置的语言特性或者函数来便利数组。- PHP在创建数组的时候,不需要指定数组的大小。
- 数组在创建的时候不需要指定大小,引用数组的元素使用一对中括号。可以用赋值代替创建。$state[0] = "hello";这样就创建了一个数组,同时第一个元素赋值。
- PHP中的数组可以统一看成key-value的对,对于数值型的索引,并不需要索引是连续的。而且向数组中添加一个键值对是在数组的末尾添加。
<?php
$name[1] = "lucy";
$name[0] = "lily";
reset($name);
foreach($name as $tmp) {
echo $tmp."<br>";
}
?>
// lucy lily