PHP数组
PHP数组(array)是 PHP 中最常用的复合数据类型,本质是一个有序映射(ordered map),把「键」关联到「值」。键只能是整数或字符串,值可以是任意类型,包括另一个数组。因此 PHP 并不像其他语言那样严格区分「索引数组」和「关联数组」——两者其实是同一种结构:[0 => 'a', 1 => 'b'] 和 ['name' => 'Tom'] 底层完全一样。
它常用来表示列表、字典和多维/嵌套数据,也是函数之间传递结构化数据的主要方式。需要注意它并非 C 语言那种连续内存的「数组」,而是有序哈希表,既能保持插入顺序,又能按键快速查找。
常见误区:
- 键会自动转换:字符串
"8"会变成整数8,浮点键被截断取整,true/false/null分别转成1/0/""。 json_decode($s)默认返回对象,加第二个参数true才得到关联数组。- 对应关系:JSON 对象 ↔ 关联数组,JSON 数组 ↔ 索引数组,互转时容易混淆。
常见问题
PHP的索引数组和关联数组有本质区别吗?
没有。两者底层都是同一种「有序映射」结构,索引数组只是键恰好是连续的整数而已,实现和性能特征完全相同。
怎么把 JSON 转成 PHP 数组?
用 json_decode($json, true),第二个参数传 true 会返回关联数组而不是 stdClass 对象。也可以用站内的 json-to-php 工具直接生成对应的 PHP 数组代码。
为什么我用字符串 "8" 当键,取出来键却变成了整数 8?