如何控制PHP的print_r()方法的空格

问题描述:

当我使用print_r($array);方法时,我的PHP缩进副本由四个空格组成。如何将此设置更改为使用X个空格(或制表符)? Offhand我没有看到php.ini文件列出的相关内容。如何控制PHP的print_r()方法的空格

+0

为什么你需要这个? –

+1

我不认为这是可能的,但你为什么想? – rickdenhaan

+0

我为什么不呢?你们两个有你自己的喜好,我有我的。也许我的水平屏幕分辨率是120px,1,200px或12,000px。能够调整空白输出将允许我在测试期间更快地处理输出数据。 – John

如何将它保存到一个变种,并对它进行修改(在函数中)?根据文档,print_r没有特殊设置来修改输出。

$var = print_r($your_array, true); 
$var = str_ireplace(' ',' ',trim($var)); 
var_dump($var); 
+0

有趣的...还有你*有点*错过了一部分,但我看到你的意图*路径。由于我没有澄清四个空格应该替换的内容,因此我拿了四个空格替换为一个例子。如果我必须做深入的调试,我总是会做一些诸如'echo'

';print_r($array);echo '
';'。我想如果这不仅仅是一种刺激,我可以坚持这个功能。 – John
+0

无论如何你为什么这么做?只需将它以javascript和console.log函数打印到浏览器控制台即可。您的浏览器将在控制台中设置它,并且您的网页不受影响。使用print_r来进行除了调试之外的任何事情都非常糟糕。 –

+0

等一下,JavaScript呢?我只是想改变空白PHP输出的数量,而不是用CSS来设计代码。 – John

其实缩进由HTML @see here 的“预”的标签给要实际编辑缩进使用CSS作为

pre { 
    display: block; 
    font-family: monospace; 
    white-space: pre; 
    margin: 1em 0; 
} 

和编辑的白色间隔的properity。

+0

使用print_r是难看的水平代码,浏览器会看到“pre”标记并缩进它 –

+0

直接与这个问题没有直接关系,虽然我已经使用'echo'

';print_r($array);echo '
';'调试多年,所以您在某种程度上遵循。 – John
+0

是的...但这可以做你的工作 –

由于文档没有说明这一点,我搜索了PHP源代码,看看print_r做什么以及它在哪里得到它的缩进值。

将4个空格硬编码到源代码中。在print_r()后面的C函数在到达the one之前会经过其他几个函数,它们实际上会生成您获得的输出,并且此函数使用PRINT_ZVAL_INDENT constant来确定每个缩进得到的空间数量。

该函数直接检索常量,它周围没有任何逻辑来查看是否有配置值或覆盖它的环境变量。所以如果你想修改这个值来使print_r()缩进不同数量的空格,你必须查看源代码,将常量改为4以外的东西并从源代码编译PHP。

+0

“[..]并从源代码编译PHP。“ - 我喜欢你解决这个问题的风格 –