PHP打印变量一般有echo、print_r、var_dump等方式,但是这些方式打印的变量在浏览器上显示的效果都不是很友好,所以一些PHP框架都会带有自己的打印变量的方法。这里我把ThinkPHP框架打印变量的dump方法提取出来,自己平时测试代码打印变量可以用该方法,这样在浏览器上的显示效果更加友好。
/**
* 浏览器友好的变量输出
* @access public
* @param mixed $var 变量
* @param boolean $echo 是否输出(默认为 true,为 false 则返回输出字符串)
* @param string|null $label 标签(默认为空)
* @param integer $flags htmlspecialchars 的标志
* @return null|string
*/
function dump($var, $echo = true, $label = null, $flags = ENT_SUBSTITUTE)
{
$label = (null === $label) ? '' : rtrim($label) . ':';
ob_start();
var_dump($var);
$output = preg_replace('/]=>
(s+)/m', '] => ', ob_get_clean());
if (PHP_SAPI == 'cli') {
$output = PHP_EOL . $label . $output . PHP_EOL;
} else {
if (!extension_loaded('xdebug')) {
$output = htmlspecialchars($output, $flags);
}
$output = '<pre>' . $label . $output . '</pre>';
}
if ($echo) {
echo($output);
return;
}
return $output;
}
$arr = [
['name' => 'itbsl', 'priority' => 23],
['name' => 'jack', 'priority' => 3],
['name' => 'rose', 'priority' => 12],
['name' => 'pick', 'priority' => 45],
['name' => 'binbin', 'priority' => 68],
['name' => 'didi', 'priority' => 56789],
['name' => 'abc', 'priority' => 0],
];
dump($arr);
输出结果的样式为:
array(7) {
[0] => array(2) {
["name"] => string(5) "itbsl"
["priority"] => int(23)
}
[1] => array(2) {
["name"] => string(4) "jack"
["priority"] => int(3)
}
[2] => array(2) {
["name"] => string(4) "rose"
["priority"] => int(12)
}
[3] => array(2) {
["name"] => string(4) "pick"
["priority"] => int(45)
}
[4] => array(2) {
["name"] => string(6) "binbin"
["priority"] => int(68)
}
[5] => array(2) {
["name"] => string(4) "didi"
["priority"] => int(56789)
}
[6] => array(2) {
["name"] => string(3) "abc"
["priority"] => int(0)
}
}