当前位置: 首页 > 后端技术 > PHP

PHP输出:echo,print,printf,sprintf,print_r,var_dump

时间:2023-03-30 03:33:36 PHP

面试常问的问题:请简单说明一下PHP的打印方式有哪些?或直接提问:请说明一下,echo、print、print_r的区别看似很简单,一般出现在初中级的笔试题中。但要真正解释清楚这些语言结构或功能并不是那么简单。今天我们就来好好看看与这些打印件相关的内容。echo最基本的输出语句不是函数而是语言结构,不需要括号。可以使用参数列表,以逗号分隔。但是如果加上括号,输出就不能用逗号分隔了。没有返回值。echo'fullstackpm';//正常输出:fullstackpmecho'fullstackpm','is','Good!';//正常输出:fullstackpmisGood!echo('fullstackpm');//正常输出:fullstackpmecho('fullstackpm','is','Good!');//报错。print和echo基本一样,只是不支持参数列表,有返回值。返回值始终为1,因为有返回值,所以效率相对于echoprint'fullstackpm'要低一些;//正常输出:fullstackpmprint'fullstackpm','is','Good!';//错误$r=print('fullstackpm');//正常输出:fullstackpmprint$r;//输出1printf和sprintf是两个非常大的函数,可以格式化输出字符串。使用%标记占位符,后面的参数对应占位符的替换。printf和sprintf的区别在于前者直接输出,而后者将字符串作为函数返回。请看例子。$str='我叫%s,我%d岁。';printf($str,'fullstackpm',1002);//直接输出:我叫fullstackpm,今年1002岁。$s=sprintf($str,'魔兽世界',12);//这里不会输出print$s;//输出:我叫WoW,今年12岁。最起码你要记住,%s代表字符串,%d代表数字,%f是浮点数,%%是输出%本身,还有很多其他的类型可以看相关文档。类似的还有几个:vprintf,它的第二个参数是数组,不是变长参数。sscanf以不同方式处理一些特殊字符。fscanf,从文件中读取和格式化。print\_r是一个非常常用的函数,可以格式化输出数组或对象。注意第二个参数设置为true,可以返回函数而不是直接输出。$str=["a",1=>"b","3"=>"c","show"=>'d'];print_r($str)//输出/**数组([0]=>a[1]=>b[3]=>c[显示]=>d)*/$s=print_r($str,true);//echo$s这里不会输出;//输出//注意输出流不在ob_start()中,测试此段时请不要有任何其他输出/**Array([0]=>a[1]=>b[3]=>c[show]=>d)*/var\_dump和var\_exportsvar\_dump也是很常用的显示结构信息的函数,包括类型和值,数组对象会展开,缩进用来表示层级。var\_exports的区别在于var\_exports返回的内容是普通的PHP代码,可以直接使用,并且有一个类似print\_r的第二个返回参数,作用类似。$str=["a",1=>"b","3"=>"c","show"=>'d'];var_dump($str);//输出/**数组(4){[0]=>string(1)"a"[1]=>string(1)"b"[3]=>string(1)"c"'show'=>string(1)"d"}*/var_export($str);//输出/**数组(0=>'a',1=>'b',3=>'c','show'=>'d',)*/================关注公众号:【硬核项目经理】获取最新文章加微信/QQ好友:【xiaoyuezigoggong/149844827】免费PHP、项目管理学习资料知乎、公众号、抖音、今日头条搜索【硬核项目经理】B站ID:482780532