PHP 中 echo print print_r() var_dump() 的区别

echo
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。
print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
var_dump()
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
疑问
它们都有返回值吗
- echo 没有返回值,返回会报错
- print 有返回值
- print_r() 有返回值
- var_dump()有返回值,但是返回值是NULL
关于带不带括号
- echo 可带,可不带
- print 可带,可不带
- print_r() 必须带
- var_dump() 必须带
可否输出多个变量
- echo 可以(不可加括号)
- print 不可以
- print_r() 不可以
- var_dump() 可以
可以打印的数据类型
- echo: 可以输出「字符型,整形,浮点型,布尔型,资源」;不可以输出「数组,对象」(会报错)不会输出「NULL」(不会报错)
- print: 可以输出「字符型,整形,浮点型,布尔型,资源」;不可以输出「数组,对象」(会报错)不会输出「NULL」(不会报错)和echo表现一致
- print_r: 可以输出「字符型,整形,浮点型,布尔型,数组,对象,资源」不会输出“「NULL」(不会报错)
- var_dump: 可以输出「字符型,整形,浮点型,布尔型,数组,对象,资源,NULL」