以符合人类阅读的方式打印php数组

在程序开发过程中;打印数据进行查看调试是非常频繁的;如果没有一种易于阅读的样式那是相当痛苦的;

先定义一个数组;

$array=array(
    't0'=>'test0',
    't1'=>'test1',
    't3'=>array(
        'tt0'=>'test0',
        'tt1'=>'test1',
        'tt3'=>'test3',
        )
    );

如果用php系统函数print_r 或者 var_dump 打印,出来的效果是这样的;

print_r($array);

白俊遥博客

我想除了超神级别的眼力,一般人是很难阅读的;

还好thinkphp为我们准备了一个靠谱点的dump函数,效果是这样的:

dump($array);

白俊遥博客

var_dump临时用来打印小数组还可以凑合;如果打印一个结构复杂的数组,或者长期开发一个项目,这种样式依然看着不美观;

于是手写一个p函数,效果是这样的;

function p($data){
    echo '<hr><pre>'.print_r($data,true).'<pre><hr>';
}
p($array);

白俊遥博客

怎么样;世界瞬间干净整洁了吧,之所以加上2个<hr>标签;主要是为了同时p多个数组时,有个横线来分界;

在相当长一段时间内都是使用这样一个简陋的函数,直到有一天发现了bootstrap对<pre>的样式定义;于是p函数就 升级为了这个样子;效果是这样的:

//传递数据以易于阅读的样式格式化后输出
function p($data){
    // 定义样式
    $str='<pre style="display: block;padding: 9.5px;margin: 44px 0 0 0;font-size: 13px;line-height: 1.42857;color: #333;word-break: break-all;word-wrap: break-word;background-color: #F5F5F5;border: 1px solid #CCC;border-radius: 4px;">';
    // 如果是boolean或者null直接显示文字;否则print
    if (is_bool($data)) {
        $show_data=$data ? 'true' : 'false';
    }elseif (is_null($data)) {
        $show_data='null';
    }else{
        $show_data=print_r($data,true);
    }
    $str.=$show_data;
    $str.='</pre>';
    echo $str;
}
p($array);

白俊遥博客

再次深深感谢bootstrap;

白俊遥博客
请先登陆后发表评论
  • 最新评论
  • 总共1条评论
白俊遥博客

:非常好 ····谢谢···

2016-05-15 22:06:26 回复