PHP中输出数组键值对应使用print_r($arr, true)配合标签或var_export($arr, true),前者适合调试查看结构,后者生成可复用的PHP代码;Web环境必须包裹以保留缩进和换行,CLI下可用var_export获得对齐效果。

PHP怎么输出arraylist(实际是数组)的键值对
PHP 没有 ArrayList 类型,你看到的多半是普通数组(array),包括索引数组和关联数组。要清晰查看键值对,核心不是“输出”,而是“可读地格式化输出”。
直接 echo $arr 会报错;print_r($arr) 和 var_dump($arr) 是最常用手段,但默认不自动对齐,尤其嵌套深时容易看花眼。
-
print_r($arr, true)返回字符串,适合配合保持缩进 -
var_dump($arr)更详细(含类型、长度),但信息过载,调试时有用,日常查结构略重 - 避免用
echo json_encode($arr, JSON_PRETTY_PRINT)查关联数组——会把数字键转成字符串,且丢失null/resource等非JSON类型
关联数组键值对如何对齐查看(带缩进+换行)
关键在让输出保留结构层级,并用等宽字体呈现。最简单可靠的方式是包裹 + print_r:
<pre class="brush:php;toolbar:false;"><?php print_r($arr); ?>
如果在 CLI 下运行,可用 var_export($arr, true),它输出的是合法 PHP 代码,键名和值天然对齐,还支持复制粘贴回代码中:
<?php $arr = ['name' => 'Tom', 'scores' => [95, 87]]; echo "<pre class="brush:php;toolbar:false;">" . var_export($arr, true) . ""; ?>
-
var_export对null、true、false输出原生写法(如NULL),比print_r更“代码友好” - 注意:它不处理闭包、资源、对象,默认会触发
E_NOTICE,仅限纯数组/标量数据 - Web 环境下务必加
,否则换行符会被 HTML 合并
想按列对齐键和值(类似表格)?得自己格式化
PHP 原生没有 printf 式的键值对对齐函数,但可以用 sprintf + str_pad 手动控制宽度。适用于扁平关联数组(无嵌套):
<?php foreach ($arr as $key => $value) {
$keyStr = is_string($key) ? "'$key'" : (string)$key;
$valStr = is_string($value) ? "'$value'" : var_export($value, true);
printf("%-12s => %s\n", $keyStr, $valStr);
}
?>
-
%-12s表示左对齐、占 12 字符宽,可根据最长键长调整 - 嵌套数组或对象建议退回
print_r+,手动对齐成本高且易崩 - 别用
strlen()计算中文宽度——终端/浏览器对 Unicode 宽度处理不一致,优先靠+ 缩进解决
为什么 var_dump/print_r 有时看起来“没对齐”
根本原因不是函数问题,而是输出环境没正确解析空白符:
- Web 页面中未包裹
→ 所有换行、多个空格被 HTML 渲染为单空格 - CLI 下用了
echo但终端宽度太窄 → 自动折行破坏缩进视觉 - 数组里混了超长字符串(如 base64 图片)→ 挤占横向空间,导致后续缩进错位
- IDE 控制台(如 PhpStorm)默认关闭“软换行”,但未开启“显示空白字符”,看不出缩进层级
真正影响对齐感的,从来不是 PHP 函数本身,而是你怎么把它送到人眼面前。一个 标签,往往比改十行格式化逻辑更管用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











