请简要解释PHP的打印办法都有哪些?

或者直接点问:

请解释echo、print、print_r的差异

php中类似scanfPHP中的输出echoprintprintfsprintfprintr和vardump Ruby

看着很大略,一样平常会涌如今初中级的笔试题中。
但是要真正解释白这些措辞构造或者函数也不是那么大略的事情。
本日我们就来好好看看这些打印输出干系的内容。

echo

最根本的输出语句,不是函数是措辞构造,不须要括号。
可以利用参数列表,用逗号分隔。
但如果加了括号就不能用逗号分隔着输出了。
没有返回值。

echo 'fullstackpm'; // 正常输出:fullstackpmecho 'fullstackpm', ' is ', 'Good!'; // 正常输出:fullstackpm is Good!echo ('fullstackpm'); // 正常输出:fullstackpmecho ('fullstackpm', ' is ', 'Good!'); // 报错了

print

基本和echo一样,但是不支持参数列表,有返回值。
返回值永久是1。

由于有返回值,以是相对来说效率不如echo

print 'fullstackpm'; // 正常输出:fullstackpmprint 'fullstackpm', ' is ', 'Good!'; // 缺点$r = print ('fullstackpm'); // 正常输出:fullstackpmprint $r; // 输出1

printf和sprintf

两个很高大上的函数,可以格式化输出字符串。
用%标明占位符,后面的参数对应进行占位符的更换。
printf和sprintf的差异便是前者直接进行了输出,而后者是将字符串进行了函数返回。
请看实例。

$str = 'My name is %s, I\'m %d years old.';printf($str, 'fullstackpm', 1002); // 直接输出:My name is fullstackpm, I'm 1002 years old.$s = sprintf($str, 'WoW', 12); // 这里不会输出print $s; // 输出:My name is WoW, I'm 12 years old.

你最少要记住的,%s代表字符串,%d代表数字,%f是浮点数,%%是输出%本身,其他还有许多类型可以查看干系文档。
其余还有类似的几个:

vprintf,他的第二个参数是一个数组,不是可变长度的参数。
sscanf,对付一些分外字符处理办法不同。
fscanf,从文档中读取并进行格式化。

print_r

非常常用的一个函数,可以格式化的输出数组或工具。
把稳第二个参数设置为true,可以不直接输出而是进行函数返回。

$str = [ \公众a\公众, 1 => \"大众b\公众, \"大众3\"大众 => \公众c\公众, \公众show\"大众=>'d'];print_r($str)// 输出/ Array ( [0] => a [1] => b [3] => c [show] => d )/$s = print_r($str, true); // 此处不会输出echo $s;// 输出// 把稳,输出流不在ob_start()中,测试本段请不要有其他任何输出/ Array ( [0] => a [1] => b [3] => c [show] => d )/

var_dump和var_exports

var_dump也是非常常用的一个函数,用来显示构造信息,包括类型与值,数组工具都会展开,用缩进表示层次。
var_exports与之不同的地方在于var_exports返回的内容是正常的PHP代码,可以直策应用,并且有和print_r类似的第二个return参数,浸染也类似。

$str = [ \"大众a\公众, 1 => \"大众b\"大众, \公众3\"大众 => \"大众c\"大众, \公众show\"大众=>'d'];var_dump($str);// 输出/ array(4) { [0] => string(1) \"大众a\"大众 [1] => string(1) \"大众b\"大众 [3] => string(1) \公众c\公众 'show' => string(1) \公众d\公众 }/var_export($str);// 输出/ array ( 0 => 'a', 1 => 'b', 3 => 'c', 'show' => 'd', )/