PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码


Posted in PHP onDecember 01, 2020

大家在面试中,经常会被问到的问题:

请简要说明PHP的打印方式都有哪些?

或者直接点问:

请说明echo、print、print_r的区别

看着很简单,一般会出现在初中级的笔试题中。但是要真正说明白这些语言结构或者函数也不是那么简单的事情。今天我们就来好好看看这些打印输出相关的内容。

echo

最基础的输出语句,不是函数是语言结构,不需要括号。可以使用参数列表,用逗号分隔。但如果加了括号就不能用逗号分隔着输出了。没有返回值。

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

print

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

因为有返回值,所以相对来说效率不如echo

print 'fullstackpm'; // 正常输出:fullstackpm
print 'fullstackpm', ' is ', 'Good!'; // 错误
$r = print ('fullstackpm'); // 正常输出:fullstackpm
print $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',
  )
*/

到此这篇关于PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码的文章就介绍到这了,更多相关PHP输出echo、print、printf、sprintf、print_r和var_dump内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
提升PHP执行速度全攻略
Oct 09 PHP
php中文本操作的类
Mar 17 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
PHP策略模式写法
Apr 01 PHP
php如何实现数据库的备份和恢复
Nov 30 #PHP
php实现简单四则运算器
Nov 29 #PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
Nov 27 #PHP
php实现JWT验证的实例教程
Nov 26 #PHP
PHP替换Word中变量并导出PDF图片的实现方法
Nov 26 #PHP
PHP扩展安装方法步骤解析
Nov 24 #PHP
Cookie跨域问题解决方案代码示例
Nov 24 #PHP
You might like
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
html数组字符串拼接的最快方法
2009/09/16 Javascript
再探JavaScript作用域
2014/09/24 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
PHP开发工程师面试问题集锦
2012/11/01 面试题
分厂厂长岗位职责
2013/12/29 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
群众路线表态发言材料
2014/10/17 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
手残删除python之后的补救方法
2021/06/26 Python
nginx.conf配置文件结构小结
2022/04/08 Servers
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android