echo
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以。
print()
print()打印一个值(它的参数),print() 函数比 echo() 稍慢。
print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
var_dump()
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
区别与联系
echo 和 print 的区别
共同点:首先echo 和 print 都不是严格意义上的函数,他们都是 语言结构;他们都只能输出字符串,整型跟int型浮点型数据。不能打印复合型和资源型数据;
而区别是:echo 可以连续输出多个变量,而print只能一次输出一个变量。print打印的值能直接复制给一个变量,如 $a = print “123”;
而echo 不可以,它没有像函数的行为,所以不能用于函数的上下文。在使用时,echo() 函数比 print()速度稍快。
print() 并不是函数(而是语言结构) 虽然可以带括号并且有返回值;所以可以不用圆括号包围参数列表。(详情参见:http://docs.php.net/manual/zh/function.print.php)
print("Hello?World"); print?"print()?also?works?without?parentheses.";
var_dump()和print_r()的区别
共同点:两者都可以打印数组,对象之类的复合型变量。
区别:print_r() 只能打印一些易于理解的信息,且print_r()在打印数组时,会将把数组的指针移到最后边,使用 reset() 可让指针回到开始处。 而var_dump()不但能打印复合类型的数据,还能打印资源类型的变量。且var_dump()输出的信息则比较详细,相比调试代码使用var_dump更便于阅读。
举例说明
(1)、4种方式输出字符串或者数字
$str="string"; ?? ?echo $str; ? ? ? ? ? //string print ($str); //string ?? ?print_r($str); //string ?? ?var_dump($str); ?//string 'string' (length=6) ??? $str=12; ? ?? ?echo $str; //12 ?? ?print ($str); //12 ?? ?print_r($str); //12 ?? ?var_dump($str);? // int 12
(2)、4种方式输出一维数组
$wosn_net = array( "username"=>"wosn", "age" ?? =>"18" ); echo $wosn_net; ? ? ? ? ? ? // error:Array to string conversion...? ?Array print $wosn_net; ? ? ? ? ? ? // error:Array to string conversion...? ?Array print_r($wosn_net); ? ? ? ? //Array ( [username] => wosn [age] => 18 ) var_dump($wosn_net); ? ? ?//array (size=2) ? ? ? ? ? ? ? ? ? ? // 'username' => string 'wosn' (length=4) ? ? ? ? ? ? ? ? ? ? //'age' => string '18' (length=2)
(3)、4种方式输出多维数组
$wosn_net = array( array("username"=>"wosn","age" ? ? ? =>"18"), array("username"=>"wosnet","age" ? ? ?=>"19") ); echo $wosn_net; ? ? ? ? ? ? //error:Array to string conversion ....Array print($wosn_net); ? ? ? ? ?//error:Array to string conversion ....Array print_r($wosn_net); ? ? ? //Array ( [0] => Array ( [username] => wosn [age] => 18 ) ?? ? ? ? ? ? ? ? ? ? ? //[1] => Array ( [username] => wosnet [age] => 19 ) ) var_dump($wosn_net); //返回值如下: //array (size=2) // 0 => // array (size=2) // 'username' => string 'wosn' (length=4) // 'age' => string '18' (length=2) // 1 => // array (size=2) // 'username' => string 'wosnet' (length=6) // 'age' => string '19' (length=2)
延伸拓展
printf:函数,把文字格式化以后输出,如:
$name="hunte"; $age=25; printf("my name is %s, age %d", $name, $age); %% - 返回百分比符号 %b - 二进制数 %c - 依照 ASCII 值的字符 %d - 带符号十进制数 %e - 可续计数法(比如 1.5e+3) %u - 无符号十进制数 %f - 浮点数(local settings aware) %F - 浮点数(not local settings aware) %o - 八进制数 %s - 字符串 %x - 十六进制数(小写字母) %X - 十六进制数(大写字母)
sprintf:跟printf相似,但不打印,而是返回格式化后的文字,其他的与printf一样。
评论