PHP中echo和print的区别

如题所述

echo 是语法结构,也就是关键字,不是函数。使用的时候不用加括号,加上也可以。显示多个值的时候可以用逗号隔开。只支持基本类型,布尔型除外,echo true的时候显示1,echo false的时候啥都没有。

print 和 echo 基本一致。但是print 不支持逗号分隔多个显示变量的语法。

print_r 是函数,不仅可以打印变量的的值,还能显示变量类型,而且也可以显示数组和对象这样复杂的变量类型。print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-10

四种方法可以输出字符串。echo、print()、printf()、print_r()

1、echo
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(languageconstruct),而并不是真正的函数,因此不能作为表达式的一部分使用。

语法正确:echo"Hello","World";
语法错误:echo("Hello","World");

2、print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。如,

if(!print("Hello,World")){
die("youarenotlisteningtome");
}
printf()

3、printf()

printf()源于C语言中的printf()。该函数输出格式化的字符串。

语法:printf(format,arg1,arg2,arg++)

format规定字符串以及如何格式化其中的变量;
arg1,arg2,++等参数将插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个%符号中,插入arg1,在第二个%符号处,插入arg2,依此类推。

Example:?php
$str="Hello";
$number=123;
printf("%sworld.Daynumber%u",$str,$number);
?>
#Results======
Helloworld.Daynumber123

如果%符号多于arg参数,则您必须使用占位符。占位符被插入%符号之后,由数字和"$"组成。请参见例子3。

Example:?php
$number=123;
printf("With2decimals:%1$.2fbr/>Withnodecimals:%1$u",$number);
?>
#Result
With2decimals:123.00
Withnodecimals:123

4、print_r()和var_dump()
print_r()可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。如,$a=array('name'=>'Fred','age'=>'15','wife'=>'Wilma');

print_r($a);
Output:Array
{
[name]=>Fred
[age]=>15
[wife]=>Wilma
}

对象也一样。如,

classP{
var$name='nat';
//...
}
$p=newP;
print_r($p);
Output:Object
{
[name]=>nat
}

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