当我使用 print_r($array);
方法时,我的 PHP 副本缩进了四个空格。如何将此设置更改为使用 X 个空格(或制表符)?顺便说一句,我没有看到与 php.ini 文件相关的内容。
保存到变量中,而不是对其进行修改(在函数中)? print_r没有根据文档修改输出的特殊设置。
$var = print_r($your_array, true);
$var = str_ireplace(' ',' ',trim($var));
var_dump($var);
由于文档没有指定这一点,我搜索了 PHP 源代码以查看print_r
的作用以及它从哪里获得缩进值。
这 4 个空格被硬编码到源中。print_r()
背后的 C 函数在到达实际生成输出的函数之前会经过其他几个函数,此函数使用 PRINT_ZVAL_INDENT
常量来确定每个缩进获得多少空格。
该函数直接检索常量,没有围绕它的逻辑来查看是否有覆盖它的配置值或环境变量。因此,如果您想修改此值以print_r()
缩进不同数量的空格,则必须检查源代码,将常量更改为4
以外的其他值,然后从源代码编译 PHP。
function print_rt($obj, $spaces=" ", $return=false) {
/* © 2022 Peter Kionga-Kamau. Free for unrestricted use.
Notes: - Not concerned about performance here since print_r is a debugging tool
- Single preg_replace() will substitute spaces in contents, hence the loop.
*/
$out = explode("n",print_r($obj,1));
foreach ($out as $k=>$v) $out[$k] = preg_replace("/(( ){4})/", $spaces, substr($v,0,strlen($v)-strlen(ltrim($v)))).ltrim($v);
if($return) return implode("n",$out); echo implode("n",$out);
}
用法:
print_rt($obj);
实际上缩进是由 html 的 "pre" 标签给出的 @see 这里要实际编辑缩进,请使用 css 作为
pre {
display: block;
font-family: monospace;
white-space: pre;
margin: 1em 0;
}
并编辑白色间距的适当性。