PHP:echo、print、print_r 和 var_dumpphp
echo
和 print
都不是函数,而是 语言结构,因此圆括号都不是必需的。二者十分类似,功能几乎是彻底同样。数组
一、echo 能够输出多个字符串,使用 ,
链接函数
echo 'a','b','c';
输出:abc.net
若是你非要加上圆括号,须要注意调试
echo ('a','b','c'); //错误 echo ('a'),('b'),('c'); //正确
二、print 只能输出一个字符串code
print 'a','b','c'; //错误 print 'abc'; //正确 print 'a'.'b'.'c'; //正确
注意:上面的 'a'.'b'.'c'
并非多个字符串,而是 PHP 中拼接(concat)多个字符串后的一个字符串。字符串
三、echo 没有返回值,print 有返回值 1get
所以 print 能用在表达式中:string
$ret = print 'abc'; echo $ret + 1;
输出:abc2io
四、echo 输出的速度比 print 快
print_r()
显示关于一个变量的易于理解的信息。若是给出的是 string、integer 或 float,将打印变量值自己。若是给出的是 array,将会按照必定格式显示键和元素。object 与数组相似。
print_r()
会舍弃掉小数位末尾的 “0”;布尔值 true 输出 1,false 不输出;空字符串 和 null 不输出。若是给出的是 array,将会按照必定格式显示键和元素。object 与数组相似。
var_dump()
方法是判断一个变量的类型与长度,并输出变量的值和数据类型。var_dump()
输出比 print_r()
更详细,通常调试时用得多。二者区别以下:
$arr = array(5, 5.0, 'hello', '', true, false, null); var_dump($arr); print_r($arr);
输出:
array(7) { [0]=> int(5) [1]=> float(5) [2]=> string(5) "hello" [3]=> string(0) "" [4]=> bool(true) [5]=> bool(false) [6]=> NULL } Array ( [0] => 5 [1] => 5 [2] => hello [3] => [4] => 1 [5] => [6] => )
题外:若是想捕捉 print_r()
的输出,可添加一个 true 参数。此时 print_r()
将不打印结果,而是返回其输出。
$str = "hello"; $result = print_r($str, true); echo $result;
输出:hello