php数组创建无标准方式,仅依场景选择:PHP 5.4+推荐[]语法(更简短易读),5.3及以下必须用Array();键名须加引号防常量误解析;规则数组优先用range()或array_fill()等内置函数。

PHP数组创建没有“标准方式”,只有“合适场景”——用 array() 还是 [],取决于 PHP 版本、可读性需求和是否要兼容旧环境。
PHP 5.4+ 直接用 [] 是最简写法
PHP 5.4 开始支持短数组语法,[] 完全等价于 array(),且更轻量、更易读。
- 写键值对时,
['name' => 'Alice', 'age' => 30]比array('name' => 'Alice', 'age' => 30)少敲 5 个字符 - 嵌套数组也更清爽:
[['id' => 1], ['id' => 2]]不会因括号嵌套变混乱 - 注意:PHP 5.3 及更早版本会直接报错
Parse Error: syntax error, unexpected '['
PHP 5.3 或需要向下兼容时必须用 array()
如果项目还在跑 PHP 5.3(比如某些老旧 CMS 或内网系统),[] 语法不可用,硬写就是解析失败。
- 错误现象:
Parse error: syntax error, unexpected '['—— 看到这个,先查 PHP 版本,别急着改逻辑 -
array()在所有 PHP 4+ 版本中都安全,包括已废弃的 PHP 4.3 - 参数写法一致:空数组写
array(),带值写array(1, 2, 3)或array('a' => 1)
创建关联数组时,键名引号不是必须的,但建议加
PHP 允许不加引号的键名(如 $arr[key] = 'val'),但这是危险习惯。
立即学习“PHP免费学习笔记(深入)”;
- 没引号的
key会被当作常量;若该常量未定义,PHP 会自动转成字符串,同时触发E_NOTICE - 实际开发中,
$arr[status]很可能本意是字符串键,但万一定义过const status = 1;,值就错了 - 正确写法统一用引号:
['status' => 'active']或array('status' => 'active')
用 range() 或 array_fill() 创建规则数组更高效
不要手写 [1,2,3,4,5] 或重复 ['x','x','x'],PHP 内置函数更准更快。
-
range(1, 5)→[1,2,3,4,5];支持字母:range('a', 'c')→['a','b','c'] -
array_fill(0, 3, 'default')→[0 => 'default', 1 => 'default', 2 => 'default'] - 注意:
array_fill_keys(['a','b'], 'val')填的是关联键,别和array_fill()混用
真正容易被忽略的,是数组键名的隐式类型转换:数字字符串 '123' 和整数 123 作为键,在 PHP 数组里是同一个位置。写的时候看着像不同键,运行时却互相覆盖。