php array 实现结构
PHP 数组的基本结构
PHP 数组是一种有序映射,能够将键(key)关联到值(value)。键可以是整数或字符串,值可以是任意类型。PHP 数组支持多种操作,包括增删改查。
数组的初始化
PHP 数组可以通过 array() 或短数组语法 [] 初始化:
// 使用 array() 初始化
$array1 = array("foo" => "bar", 12 => true);
// 使用短数组语法初始化
$array2 = ["foo" => "bar", 12 => true];
键的类型
数组的键可以是整数或字符串。如果键是字符串,且不包含合法的整数格式,则会被视为字符串键。如果键是浮点数、布尔值或 NULL,PHP 会将其转换为整数:
$array = array(
1 => "a", // 整数键
"1" => "b", // 字符串键 "1" 会被转换为整数 1
1.5 => "c", // 浮点数键 1.5 会被转换为整数 1
true => "d", // 布尔键 true 会被转换为整数 1
null => "e" // NULL 键会被转换为空字符串 ""
);
值的类型
数组的值可以是任意 PHP 类型,包括标量(整数、浮点数、字符串、布尔值)、复合类型(数组、对象)或特殊类型(NULL、资源):
$mixedArray = array(
"string" => "Hello",
"integer" => 42,
"float" => 3.14,
"boolean" => true,
"array" => array(1, 2, 3),
"object" => new stdClass(),
"null" => null
);
数组的操作
访问数组元素
通过键名访问数组元素:

$array = ["name" => "Alice", "age" => 25];
echo $array["name"]; // 输出 "Alice"
添加或修改元素
通过指定键名添加或修改元素:
$array = [];
$array["key"] = "value"; // 添加新元素
$array["key"] = "new value"; // 修改元素
删除元素
使用 unset() 删除数组元素:
$array = ["a" => 1, "b" => 2];
unset($array["a"]); // 删除键为 "a" 的元素
遍历数组
使用 foreach 遍历数组:

$array = ["a" => 1, "b" => 2];
foreach ($array as $key => $value) {
echo "$key: $value\n";
}
数组的函数
PHP 提供了丰富的数组函数,例如 count()、array_push()、array_pop()、array_merge() 等:
$array = [1, 2, 3];
echo count($array); // 输出 3
array_push($array, 4); // 添加元素到末尾
$last = array_pop($array); // 移除并返回最后一个元素
多维数组
PHP 支持多维数组,即数组的元素也可以是数组:
$multiArray = [
"fruits" => ["apple", "banana"],
"numbers" => [1, 2, 3]
];
echo $multiArray["fruits"][0]; // 输出 "apple"
数组的自动索引
如果未指定键名,PHP 会自动分配从 0 开始的整数键:
$array = ["a", "b", "c"];
// 等价于
$array = [0 => "a", 1 => "b", 2 => "c"];
数组的排序
PHP 提供了多种排序函数,如 sort()、rsort()、asort()、ksort() 等:
$array = [3, 1, 2];
sort($array); // 升序排序
print_r($array); // 输出 [1, 2, 3]
注意事项
- 键名唯一性:如果多个元素使用相同的键名,后面的值会覆盖前面的值。
- 类型转换:键名会进行类型转换,可能导致意外的覆盖行为。
- 性能:PHP 数组在底层实现上是哈希表,因此在大多数操作上具有较高的效率。






