php数组支持索引和关联两种形式,定义有短数组语法、array()函数和动态赋值三种方式;键可为整数或字符串并自动转换,重复键后值覆盖前值,空数组可显式声明,使用var_dump可查看实际键类型。

PHP 中数组是灵活且常用的数据结构,支持索引(数字键)和关联(字符串键)两种形式,既可自动递增索引,也可手动指定键名。定义方式简洁,初始化规则明确,但需注意键类型处理、重复键覆盖、空数组写法等细节。
基础定义方式:三种常见写法
PHP 支持以下三种等效的数组定义语法(PHP 5.4+ 推荐短数组语法):
-
短数组语法(推荐):
$arr = [1, 2, 'name' => 'Tom']; -
array() 函数语法(兼容旧版):
$arr = array(1, 2, 'name' => 'Tom'); -
动态逐个赋值:
$arr[] = 1; $arr['age'] = 25;(未声明时自动创建空数组)
键与值的初始化规则
数组键支持整数、字符串,也会自动转换;值可为任意类型(包括 null、数组、对象等):
- 整数键若为负数或过大(超出 int 范围),会被转为字符串键
- 字符串数字键(如
"1")会自动转为整数键;纯非数字字符串(如"01"、"abc")保留为字符串键 - 相同键名后出现的值会覆盖前面的值(例如
['a'=>1, 'a'=>2]最终只有'a'=>2) - 省略键时(如
[1, 2, 3]),PHP 自动分配从 0 开始的连续整数键
空数组与特殊初始化场景
空数组可显式声明,也可隐式生成,但需注意上下文行为:
立即学习“PHP免费学习笔记(深入)”;
- 显式空数组:
$arr = [];或$arr = array(); - 函数返回空数组(如
array_filter([]))结果仍是空数组 - 用
$arr[0]赋值前无需初始化,PHP 自动创建数组并设值;但读取未定义下标(如$arr[0])会触发 notice - 使用
var_dump($arr)可直观查看实际键类型和结构,避免因隐式转换导致误判
常见易错点提醒
实际开发中容易忽略的细节:
- 混合键类型时(如
[0 => 'a', '1' => 'b']),'1'是字符串键,不会与整数1冲突,但array_keys()返回结果会体现差异 - 浮点数作为键会被截断为整数(
[1.8 => 'x']等价于[1 => 'x']) -
null作为键会被转为空字符串'';布尔值true/false分别转为1/0 - 多维数组初始化建议分步或嵌套写法,避免括号混淆:
$data = ['user' => ['id' => 1, 'tags' => ['php', 'web']]];











