PHP没有ArrayList,实际使用array或ArrayObject/SplFixedArray;var_dump()是调试首选但需注意Web输出、大数组卡死和敏感数据过滤;生产环境改用error_log()+print_r();Xdebug配合IDE断点更高效,需调大max_depth和max_children。

PHP里没有arraylist,别被Java术语带偏了
PHP原生不提供 ArrayList 类型——这是Java的容器名。你在PHP里实际操作的是 array(关联/索引混合数组),或 PHP 8.1+ 的 ArrayObject / SplFixedArray。高频调试时误写 new ArrayList() 会直接报错:Fatal error: Uncaught Error: Class 'ArrayList' not found。务必先确认你手里的变量是不是真用 is_array() 或 var_dump(gettype($x)) 检查过类型。
快速输出数组内容:var_dump() 是首选,但要注意场景
var_dump() 能同时显示值、类型、嵌套结构和引用关系,是定位键名拼错、空值、null、false混淆等高频问题最直接的方式。但注意三点:
- 在Web环境输出前加
echo ',否则HTML会折叠换行和空格';
- 大数组(尤其含资源、闭包或深层递归)可能卡死或报错,可先用
count($arr)和array_keys($arr)快速探底 - 敏感数据(如密码字段)别直接
var_dump($user),建议用array_diff_key($user, array_flip(['password', 'token']))过滤后再看
生产环境禁用var_dump()?用error_log() + print_r() 替代
上线后关掉 display_errors,var_dump() 就看不见了。此时把数组转成可读字符串写入日志:
error_log('Debug user data: ' . print_r($user, true));
print_r($arr, true) 返回字符串而非直接输出,true 参数不能漏,否则返回 null,日志里就只看到 “Debug user data: ”。注意 print_r 不显示类型(比如不会区分 0 和 false),遇到真假值模糊问题还得切回 var_dump() 临时调试。
立即学习“PHP免费学习笔记(深入)”;
想格式化查看又不想改代码?Xdebug + IDE 断点更省力
装好 Xdebug 后,在 PHPStorm/VS Code 里打个断点,鼠标悬停变量就能展开看键值、长度、是否为空;右键还能“Evaluate Expression”实时执行 array_filter($data, 'is_string') 这类检查。比反复改 var_dump() 然后刷新页面快得多。唯一容易忽略的是:Xdebug 的 max_depth 和 max_children 默认值太小,嵌套深的数组会显示成 ... (more elements)——得去 php.ini 调大这两个值,不然等于没开。











