PHP调试时echo print() print_r() var_dump()的区别

来源:互联网 发布:英文写作润色软件 编辑:程序博客网 时间:2024/05/01 23:08

echo

  输出一个或多个值(字符串),多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

print()

  函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。和echo一样,但速度比echo慢。

print_r()

  可以把字符串和数字简单地打印出来,如果给出的是 string、integer 或 float,将打印变量值本身。object 与数组类似。而数组则以括起来的键和值得列表形式显示,并以Array开头。记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。

$arr = array('name'=> 'bob','age' => 20, 'sex' => 'man');print_r($arr);

输出形如:

Array{     [name] => bob,     [age] => 20,     [sex] => man}

  但对,用print_r()来显示布尔值和NULL是没有意义的:

如:

print_r(true);           //输出1print_r(false);          //没有输出print_r(null);          //没有输出

  print_r()输出布尔值和NULL的结果没有意义,因为都是打印”\n”。因此用var_dump()函数更适合调试。

var_dump()

  判断一个变量的类型与长度,并输出变量的数值,如果变量有值,输出的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

var_dump(true); //输出 bool(true)var_dump(false);   // bool(false)var_dump(null);   // bool(null)var_dump(array('name' => 'bob', 'age' => 20));array(2) {    ['name'] => string(3) 'bob'    ['age'] => int(20)}

var_export()

   跟print_r和var_dump类似,但是很少用。

var_dump和print_r的区别

  var_dump返回表达式的类型与值而print_r仅返回结果,相比调试代码使用var_dump更便于阅读。

  print_r(),var_export(),var_dump()的区别具体见下:

二维数组的输出:

$arr=array(        array('a'=>'aa','b'=>'bbb','c'=>'ccc'),        array('a'=>'ddd','b'=>'eee','c'=>'fff'),         array('a'=>'gg','b'=>'hh'));echo "<pre>";print_r($arr);echo "</pre>";echo "<pre>";var_export($arr);echo "</pre>";echo "<pre>";var_dump($arr);echo "</pre>";

print_r($arr)的输出结果

Array(    [0] => Array        (            [a] => aa            [b] => bbb            [c] => ccc        )    [1] => Array        (            [a] => ddd            [b] => eee            [c] => fff        )    [2] => Array        (            [a] => gg            [b] => hh        ))

var_export($arr)的输出结果

array (  0 =>   array (    'a' => 'aa',    'b' => 'bbb',    'c' => 'ccc',  ),  1 =>   array (    'a' => 'ddd',    'b' => 'eee',    'c' => 'fff',  ),  2 =>   array (    'a' => 'gg',    'b' => 'hh',  ),)

var_dump($arr)的输出结果

array (size=3)  0 =>     array (size=3)      'a' => string 'aa' (length=2)      'b' => string 'bbb' (length=3)      'c' => string 'ccc' (length=3)  1 =>     array (size=3)      'a' => string 'ddd' (length=3)      'b' => string 'eee' (length=3)      'c' => string 'fff' (length=3)  2 =>     array (size=2)      'a' => string 'gg' (length=2)      'b' => string 'hh' (length=2)

下面再给出一个json格式的输出:

$arr=array(array('a'=>'aa','b'=>'bbb','c'=>'ccc'),           array('a'=>'ddd','b'=>'eee','c'=>'fff'),           array('a'=>'gg','b'=>'hh'));$arra=json_encode($arr);echo "<pre>";print_r($arra);echo "</pre>";echo "<pre>";var_export($arra)echo "</pre>";echo "<pre>";var_dump($arra);echo "</pre>";

print_r($arra)输出

[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]

var_export($arra)输出

'[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]'

var_dump($arra)输出

string '[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]' (length=84)
0 0