以符合人类阅读的方式打印php数组【转载】
在程序开发过程中;打印数据进行查看调试是非常频繁的;如果没有一种易于阅读的样式那是相当痛苦的;
先定义一个数组;
1
2
3
4
5
6
7
8
9
|
$array = array ( 't0' => 'test0' , 't1' => 'test1' , 't3' => array ( 'tt0' => 'test0' , 'tt1' => 'test1' , 'tt3' => 'test3' , ) ); |
如果用php系统函数print_r 或者 var_dump 打印,出来的效果是这样的;
1
|
print_r( $array ); |
我想除了超神级别的眼力,一般人是很难阅读的;
还好thinkphp为我们准备了一个靠谱点的dump函数,效果是这样的:
1
|
dump( $array ); |
dump临时用来打印小数组还可以凑合;如果打印一个结构复杂的数组,这种样式依然不够直观;
而且;对于php这种弱类型语言来说;数组元素的类型以及长度很多时候并没有那么重要;
都展示出来;太乱了;
于是手写一个p函数,效果是这样的;
1
2
3
4
|
function p( $data ){ echo '<hr><pre>' .print_r( $data ,true). '<pre><hr>' ; } p( $array ); |
怎么样;世界瞬间干净整洁了吧,之所以加上2个<hr>标签;主要是为了同时p多个数组时,有个横线来分界;
在相当长一段时间内都是使用这样一个简陋的函数,直到有一天发现了bootstrap对<pre>的样式定义;于是p函数就 升级为了这个样子;效果是这样的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//传递数据以易于阅读的样式格式化后输出 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;#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;
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com