php 没有 arraylist 类型或 arraylist_8.1 函数,8.1 新增的是 enum、readonly 等特性;数组输出推荐 json_encode($arr, json_unescaped_unicode),调试可用自定义 dd() 函数。

PHP 没有 arraylist 类型,也没有名为 arraylist_8.1 的新增函数——这是个常见误解,可能源于混淆了 Java 的 ArrayList、JavaScript 的数组习惯,或误读了 PHP 8.1 的更新日志。
PHP 8.1 根本没有 arraylist 相关函数
PHP 原生只有 array(索引/关联混合数组),不区分“列表”“集合”“队列”。PHP 8.1 新增的是 enum、readonly 属性、never 返回类型、fsync() 等,但**没有任何叫 arraylist_* 的函数或语法糖**。
- 搜索 PHP 官方文档或 RFC,找不到任何
arraylist关键字 -
var_dump()、print_r()、json_encode()仍是输出数组的主力工具 - 所谓“更简洁输出”,实际取决于你想要什么效果:可读性?调试用?API 响应?
想让数组输出更简洁?优先用 json_encode() + JSON_UNESCAPED_UNICODE
相比 var_dump()(带类型、长度、嵌套缩进)和 print_r()(无类型但格式松散),json_encode() 输出紧凑、结构清晰、天然适合日志或前端消费。
- 默认会转义中文为
\uXXXX,加JSON_UNESCAPED_UNICODE保持可读:json_encode($arr, JSON_UNESCAPED_UNICODE) - 多维数组自动缩进需额外加
JSON_PRETTY_PRINT,但会变长;纯简洁就别加 - 注意:含资源、闭包、不可序列化对象时会返回
false,建议先array_filter($arr, 'is_scalar')或用var_export()替代
调试时想又快又干净?封装一个简版 dump 函数
PHP 8.1 没提供新 dump 工具,但你可以用一行 function 自定义轻量输出:
立即学习“PHP免费学习笔记(深入)”;
function dd(...$vars) {
foreach ($vars as $v) echo json_encode($v, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR) . "\n";
exit;
}
用法:dd($users, $config) —— 不带类型、无换行污染、中文原样、遇到非标数据直接报错(比静默失败更利于定位)。
- 不用依赖
symfony/var-dumper就能获得接近的效果 - 避免
var_dump()把资源句柄(如resource #123)打出来却看不出内容 - 注意:
JSON_THROW_ON_ERROR是 PHP 7.3+ 才有,PHP 8.1 安全可用
容易被忽略的关键点
所谓“简洁”,不是函数名越短越好,而是输出是否匹配当前场景。比如:
- API 接口返回数组,
json_encode()是标准做法,不是“技巧”而是必须 - 日志里记录数组,用
json_encode($arr, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)避免斜杠转义干扰 grep -
print_r($arr, true)返回字符串虽方便拼接,但默认不处理 NaN/INF,PHP 8.1 仍存在兼容隐患 - 如果真在代码里看到了
arraylist_*,大概率是某 Composer 包自定义的 helper 函数,不是 PHP 内置











