我有一个简单的$_GET[]
查询变量集,用于在从数据库中提取查询时显示测试数据。
<?php if($_GET['test']): ?>
<div id="test" style="padding: 24px; background: #fff; text-align: center;">
<table>
<tr style="font-weight: bold;"><td>MLS</td></tr>
<tr><td><?php echo KEY; ?></td></tr>
<tr style="font-weight: bold;"><td>QUERY</td></tr>
<tr><td><?php echo $data_q; ?></td></tr>
<tr style="font-weight: bold;"><td>DATA</td></tr>
<tr><td><?php var_dump($data); ?></td></tr>
</table>
</div>
<?php endif; ?>
当我执行var_dump
时,正如预期的那样,这个大数组字符串全部被刷在一起。是否有办法至少为此添加换行符或以更可读的方式显示var_dump
?我对jQuery有关在发布后操纵字符串的建议持开放态度。
答案 0 :(得分:302)
我真的很喜欢var_export()
。如果您喜欢复制/粘贴代码,请尝试:
echo '<pre>' . var_export($data, true) . '</pre>';
甚至可以使用类似的颜色语法高亮显示:
highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
答案 1 :(得分:37)
答案 2 :(得分:16)
使用预先格式化的HTML代码
echo '<pre>';
var_dump($data);
echo '</pre>';
答案 3 :(得分:8)
我已添加@AbraCadaver答案。 我已经包含了一个javascript脚本,它将删除php启动和结束标记。 我们将有更干净漂亮的转储。
也可能是这样的人。
function dd($data){
highlight_string("<?php\n " . var_export($data, true) . "?>");
echo '<script>document.getElementsByTagName("code")[0].getElementsByTagName("span")[1].remove() ;document.getElementsByTagName("code")[0].getElementsByTagName("span")[document.getElementsByTagName("code")[0].getElementsByTagName("span").length - 1].remove() ; </script>';
die();
}
之前的结果:
结果之后:
现在我们没有php开始和结束标记
答案 4 :(得分:3)
如果“全部混在一起”,您通常可以尝试ol的“查看源代码”。有时,转储,消息和异常似乎只是一个长字符串,而事实证明换行符根本就不显示。尤其是XML树。
或者,我曾经为此目的创建了一个名为InteractiveVarDump的小工具。它当然有其局限性,但有时也很方便。即使在设计时就考虑到PHP 5。
答案 5 :(得分:2)
我似乎没有足够的代表将其作为副本关闭,但如果有人可以做到这一点,那就是一个。我在A more pretty/informative Var_dump alternative in PHP?上发布了相同的内容,但是为了节省时间,我也将其复制/粘贴在这里:
我不得不在这里添加另一个答案,因为我真的不想遍历其他解决方案中的步骤。它非常简单,不需要扩展,包含等,这就是我的首选。这非常容易而且非常快捷。
首先只是对要讨论的变量进行json_encode:
echo json_encode($theResult);
将您获得的结果复制到http://jsoneditoronline.org/的JSON编辑器中,只需将其复制到左侧窗格中,单击“复制”>,它会以一种非常漂亮的树格式打印JSON。
针对每个人,但希望这可以帮助其他人有一个更好的选择! :)
答案 6 :(得分:1)
获得更好的var_dump最好和最简单的方法是使用xDebug(必须为任何php dev) Debian方式安装
在控制台中:apt-get install php-xdebug
在那之后你应该打开php.ini(取决于你使用的是哪个堆栈)&#39 / s /etc/php/7.0/fpm/php.ini
搜索display_errors
设置相同 - &gt; display_errors = On
稍后检查同一文件中的html_errors
,它也必须是On
保存并退出
打开/etc/php/7.0/fpm/conf.d/20-xdebug.ini
并添加到最后: ``` xdebug.cli_color = 1
``` 保存并退出。
可以在此处创建xdebug的许多其他可用选项和文档。
祝你好运,玩得开心!!!
答案 7 :(得分:1)
您可以使用此debugVar()
代替var_dump()
答案 8 :(得分:1)
这是替代的,积极维护的关于类固醇的开源var_dump
:
https://github.com/kint-php/kint
它的设置为零,并且比Xdebug的var_dump具有更多的功能。
使用Kint快速绕过转储对象大小限制的示例:
require 'kint.phar';
+d( $variable ); // append `+` to the dump call
以下是屏幕截图:
答案 9 :(得分:0)
这是我的函数,有一个漂亮的var_dump。结合Xdebug,可以更好地了解我们正在倾销的内容。
我改进了Xdebug的显示(给出了一些空间,值之间的分隔符,包装长变量等)。
当您调用该函数时,您可以设置标题,背景,文本颜色以区分页面中的所有var_dump。
或不;)
/**
* Pretty var_dump
* Possibility to set a title, a background-color and a text color
*/
function dump($data, $title="", $background="#EEEEEE", $color="#000000"){
//=== Style
echo "
<style>
/* Styling pre tag */
pre {
padding:10px 20px;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
/* ===========================
== To use with XDEBUG
=========================== */
/* Source file */
pre small:nth-child(1) {
font-weight: bold;
font-size: 14px;
color: #CC0000;
}
pre small:nth-child(1)::after {
content: '';
position: relative;
width: 100%;
height: 20px;
left: 0;
display: block;
clear: both;
}
/* Separator */
pre i::after{
content: '';
position: relative;
width: 100%;
height: 15px;
left: 0;
display: block;
clear: both;
border-bottom: 1px solid grey;
}
</style>
";
//=== Content
echo "<pre style='background:$background; color:$color; padding:10px 20px; border:2px inset $color'>";
echo "<h2>$title</h2>";
var_dump($data);
echo "</pre>";
}
答案 10 :(得分:0)
为此提供了一个Symfony软件包:https://symfony.com/doc/current/components/var_dumper.html。
答案 11 :(得分:0)
function var_view($var)
{
ini_set("highlight.keyword", "#a50000; font-weight: bolder");
ini_set("highlight.string", "#5825b6; font-weight: lighter; ");
ob_start();
highlight_string("<?php\n" . var_export($var, true) . "?>");
$highlighted_output = ob_get_clean();
$highlighted_output = str_replace( "<?php", '', $highlighted_output );
$highlighted_output = str_replace( "?>", '', $highlighted_output );
echo $highlighted_output;
die();
}
答案 12 :(得分:-2)
我写了一个函数(debug_display
),可以很漂亮地打印,数组,对象和文件信息。
<?php
function debug_display($var,$show = false) {
if($show) { $dis = 'block'; }else { $dis = 'none'; }
ob_start();
echo '<div style="display:'.$dis.';text-align:left; direction:ltr;"><b>Idea Debug Method : </b>
<pre>';
if(is_bool($var)) {
echo $var === TRUE ? 'Boolean(TRUE)' : 'Boolean(FALSE)';
}else {
if(FALSE == empty($var) && $var !== NULL && $var != '0') {
if(is_array($var)) {
echo "Number of Indexes: " . count($var) . "\n";
print_r($var);
} elseif(is_object($var)) {
print_r($var);
} elseif(@is_file($var)){
$stat = stat($var);
$perm = substr(sprintf('%o',$stat['mode']), -4);
$accesstime = gmdate('Y/m/d H:i:s', $stat['atime']);
$modification = gmdate('Y/m/d H:i:s', $stat['mtime']);
$change = gmdate('Y/m/d H:i:s', $stat['ctime']);
echo "
file path : $var
file size : {$stat['size']} Byte
device number : {$stat['dev']}
permission : {$perm}
last access time was : {$accesstime}
last modified time was : {$modification}
last change time was : {$change}
";
}elseif(is_string($var)) {
print_r(htmlentities(str_replace("\t", ' ', $var)));
} else {
print_r($var);
}
}else {
echo 'Undefined';
}
}
echo '</pre>
</div>';
$output = ob_get_contents();
ob_end_clean();
echo $output;
unset($output);
}
答案 13 :(得分:-11)
使用
echo nl2br(var_dump());
这应该有效^^