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)返回字符串,适合配合<pre class="brush:php;toolbar:false;"></code> 保持缩进</li> <li><code>var_dump($arr)</code> 更详细(含类型、长度),但信息过载,调试时有用,日常查结构略重</li> <li>避免用 <code>echo json_encode($arr, JSON_PRETTY_PRINT)</code> 查关联数组——会把数字键转成字符串,且丢失 <code>null</code>/<code>resource</code> 等非JSON类型</li> </ul> <H3>关联数组键值对如何对齐查看(带缩进+换行)</H3> <p>关键在让输出保留结构层级,并用等宽字体呈现。最简单可靠的方式是包裹 <code><pre class="brush:php;toolbar:false;"></code> + <code>print_r</code>:</p> <pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;"><?php print_r($arr); ?></pre> <p>如果在 CLI 下运行,可用 <code>var_export($arr, true),它输出的是合法 PHP 代码,键名和值天然对齐,还支持复制粘贴回代码中:立即学习“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 环境下务必加
<pre class="brush:php;toolbar:false;"></code>,否则换行符会被 HTML 合并</li> </ul> <H3>想按列对齐键和值(类似表格)?得自己格式化</H3> <p>PHP 原生没有 <code>printf</code> 式的键值对对齐函数,但可以用 <code>sprintf</code> + <code>str_pad</code> 手动控制宽度。适用于扁平关联数组(无嵌套):</p> <pre class="brush:php;toolbar:false;"><?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); } ?></pre> <ul> <li> <code>%-12s表示左对齐、占 12 字符宽,可根据最长键长调整 - 嵌套数组或对象建议退回
print_r+<pre class="brush:php;toolbar:false;"></pre>,手动对齐成本高且易崩 - 别用
strlen()计算中文宽度——终端/浏览器对 Unicode 宽度处理不一致,优先靠<pre class="brush:php;toolbar:false;"></pre>+ 缩进解决
为什么 var_dump/print_r 有时看起来“没对齐”
根本原因不是函数问题,而是输出环境没正确解析空白符:
- Web 页面中未包裹
<pre class="brush:php;toolbar:false;"></pre>→ 所有换行、多个空格被 HTML 渲染为单空格 - CLI 下用了
echo但终端宽度太窄 → 自动折行破坏缩进视觉 - 数组里混了超长字符串(如 base64 图片)→ 挤占横向空间,导致后续缩进错位
- IDE 控制台(如 PhpStorm)默认关闭“软换行”,但未开启“显示空白字符”,看不出缩进层级
真正影响对齐感的,从来不是 PHP 函数本身,而是你怎么把它送到人眼面前。一个
<pre class="brush:php;toolbar:false;"></pre>标签,往往比改十行格式化逻辑更管用。 -











