php最新版(8.3/8.4)推荐使用短数组语法[]创建数组,兼顾类型安全与简洁性;其次可用array()保证全版本兼容;range()适用于序列生成;array_fill()和array_fill_keys()用于预填充;compact()可动态打包变量为关联数组。

PHP最新版(截至2026年,主流为PHP 8.3及正在演进的PHP 8.4)创建数组的方式在保持向后兼容的同时,强化了类型安全与语法简洁性。以下是适用于当前最新环境的多种创建方法:
一、使用短数组语法 [](推荐首选)
PHP 5.4引入、PHP 7/8全面优化的方括号语法,是当前所有新版PHP中最简洁、最高效、IDE支持最完善的数组字面量写法,完全等价于array()且无版本兼容负担。
1、创建空数组:$arr = [];
2、创建单元素索引数组:$arr = ['hello'];
3、创建多元素索引数组:$colors = ['red', 'green', 'blue'];
4、创建关联数组:$user = ['id' => 101, 'name' => 'Alice', 'active' => true];
5、创建嵌套多维数组:$matrix = [[1, 2], ['a' => 'x', 'b' => 'y']];
二、使用 array() 函数(全版本兼容)
作为PHP最原始且始终可用的语言结构,array() 在所有PHP版本(包括遗留系统)中均有效,适合需明确表达意图或维护跨版本代码的场景。
1、声明空数组:$arr = array();
2、初始化索引数组:$fruits = array('apple', 'banana', 'cherry');
3、初始化关联数组:$config = array('debug' => true, 'timeout' => 30, 'host' => 'localhost');
4、混合键类型数组:$mixed = array(0 => 'first', 'mode' => 'strict', 2 => 'third');
三、使用 range() 函数生成序列化数组
当需要构造具有数学规律的整数或字符序列时,range() 避免手动枚举,提升可读性与执行效率,尤其适用于选项列表、循环索引或测试数据生成。
1、生成1到10的连续整数数组:$nums = range(1, 10);
2、生成小写字母a至f的数组:$letters = range('a', 'f');
3、按步长2生成0–20偶数数组:$evens = range(0, 20, 2);
4、生成倒序数字数组(PHP 8.0+支持负步长):$desc = range(5, 0, -1);
四、使用 array_fill() 和 array_fill_keys() 预分配填充数组
适用于需批量初始化固定长度或指定键名的数组场景,如表单默认值、缓存占位、配置模板等,避免运行时重复赋值开销。
1、用相同值填充5个元素的索引数组:$flags = array_fill(0, 5, false);
2、从键名数组生成带默认值的关联数组:$keys = ['name', 'email', 'phone']; $defaults = array_fill_keys($keys, '');
3、指定起始索引填充(如从100开始编号):$ids = array_fill(100, 3, null); // [100=>null, 101=>null, 102=>null]
五、使用 compact() 从变量名动态构建关联数组
compact() 自动提取当前作用域中同名变量的值,生成以变量名为键的关联数组,大幅简化局部变量打包逻辑,常见于控制器返回响应或日志上下文组装。
1、定义多个变量:$status = 'success'; $code = 200; $data = ['id' => 123];
2、一键打包为关联数组:$response = compact('status', 'code', 'data');
3、结果等效于:['status' => 'success', 'code' => 200, 'data' => ['id' => 123]]
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











