Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以人类可读的格式输出(到日志)多级数组?_Php_Drupal - Fatal编程技术网

Php 如何以人类可读的格式输出(到日志)多级数组?

Php 如何以人类可读的格式输出(到日志)多级数组?,php,drupal,Php,Drupal,我在一个drupal站点上工作,调试时,我总是要通读长的嵌套数组。因此,我一生中的大部分时间都在使用箭头键、回车键和制表键,将1000多个字符串分割成嵌套的可读格式 对于drupal开发人员,我不能使用devel的dsm(),因为我使用的是多步骤ajax表单,我只能将数组输出到错误日志,而不能输出到屏幕 可视示例: 邪恶: 数组('form#u wrapper'=>array('form#u wrapper'=>true','type'=>fieldset','#prefix'=>'','suf

我在一个drupal站点上工作,调试时,我总是要通读长的嵌套数组。因此,我一生中的大部分时间都在使用箭头键、回车键和制表键,将1000多个字符串分割成嵌套的可读格式

对于drupal开发人员,我不能使用devel的dsm(),因为我使用的是多步骤ajax表单,我只能将数组输出到错误日志,而不能输出到屏幕

可视示例:

邪恶:

数组('form#u wrapper'=>array('form#u wrapper'=>true','type'=>fieldset','#prefix'=>'','suffix'=>'','value'=>'','name'=>array('#type'=>'textfield','title'=>NULL','size'=>60','maxlength'=>60','required'=>false','description'=>false','name'=>name'=>array('NULL','Email post'>,'('form_wrapper'=>数组('name'=>'','pass'=>'',)

好:

数组(
'form_wrapper'=>数组(
“#tree”=>正确,
“#类型”=>“字段集”,
“#前缀”=>”,
“#后缀”=>”,
“#值”=>”,
'name'=>数组(
“#键入”=>“文本字段”,
“#title”=>NULL,
“#大小”=>60,
“#maxlength”=>60,
“#必需”=>错误,
“#description”=>NULL,
“#属性”=>数组(
'占位符'=>'电子邮件',
), 
编辑:对不起,“不输出到屏幕”是指通过drupal的系统消息,可以以可点击的嵌套格式(使用devel.module)输出数组。

您应该能够在pre标记中使用var_dump()。否则,您可以考虑使用dump_r.php之类的库:

我的解决方案不正确。OP正在寻找用空格格式化的解决方案,以存储在日志文件中

解决方案可能是使用带有var_dump的输出缓冲,然后使用str_replace()所有带空格的选项卡在日志文件中对其进行格式化。

Simple stuff: 使用
print\u r
var\u dump
var\u export
如果您在查看源代码模式(而不是HTML模式)中查看结果,或者如@Joel Larson所说,如果您将所有内容都包装在
标记中,那么使用
var\u dump
应该可以很好地完成这项工作

$output = print_r($array,1);
print\r
最有利于可读性,但它不会打印空值/假值

var_dump
最适合检查值和长度的类型以及空/假值

var\u export
var\u dump
类似,但它可用于获取转储字符串

其中任何一个返回的格式在源代码中正确缩进,
var\u export
可用于日志记录,因为它可用于返回转储字符串

高级材料: 使用用于PHP的xdebug插件,它将
var_dump
s打印为HTML格式的字符串,而不是原始转储格式,还允许您提供用于格式化的自定义函数。

此函数可用于格式化输出

$output = print_r($array,1);
$output
是一个字符串变量,它可以像其他字符串一样记录。在纯php中,您可以使用
trigger\u error

error_log( print_r($multidimensionalarray, TRUE) );
例如,
触发错误($output);

如果您还需要将其格式化为html格式,可以使用
标记Drupal还有其他有用的功能,包括可以将格式化的数组和对象打印到日志文件中的功能。请参阅

error_log( print_r($multidimensionalarray, TRUE) );
dd()

将任何变量记录到中名为“drupal_debug.txt”的文件中 站点的临时目录。此函数的所有输出都附加到 日志文件,便于查看变量的内容 在修改代码时进行更改

如果您使用的是Mac OS X,则可以使用日志控制台进行监视 日志文件的内容

如果您使用的是Linux,那么可以使用命令“tail-f drupal_debug.txt“监视记录到文件中的数据

这对你有帮助

echo'
echo';

编辑


使用
echo'';
是没有用的,但是
var\u export($var);
将完成您期望的任务。

如果您需要将错误记录到Apache错误日志中,您可以尝试以下操作:


我只是想知道为什么没有人使用或推荐我喜欢的调试阵列的方式:

error_log(json_encode($array));
在我的浏览器旁边,控制台中的I
tail
我的服务器日志

tail-f/var/log/apache2/error.log

语法

variable必填项。指定要返回相关信息的变量

return可选。设置为true时,此函数将返回信息(不打印)。默认值为false

示例

错误日志(打印(,真));

阅读问题-OP需要为日志输出而不是屏幕输出执行此操作。我确实阅读了问题。错过了最后一条评论。感谢您让我知道。此解决方案将不起作用。阅读问题-OP需要为日志输出而不是屏幕输出执行此操作。@Matt阅读答案,
如果您还需要将其格式化为html
@Fivell,我试试。如果你澄清你的答案,解释输出可以发送到日志文件,我将删除我的-1。@Fivell
触发器错误有一个小问题
它将消息的最大长度限制为1024或类似的长度。使一些较长的
变量导出
//code>打印
字符串被截断。这对简单结构。阅读答案
var\u export
允许您返回字符串。@Matt当此参数设置为TRUE时,print\u r()将返回信息而不是打印信息。看起来它是
print\u r
(小写).print_R是否也能正常工作?谢谢@AkhilrajNS您能告诉我更多关于如何发送插入的查询或在此日志消息上方执行的任何查询的信息吗?@ankitsuthar您是说
error_log( print_r($multidimensionalarray, TRUE) );
print_r(variable, return);
error_log( print_r(<array Variable>, TRUE) );