PHP之sprintf函数用法详解


Posted in PHP onNovember 12, 2014

本文实例讲述了PHP中sprintf函数的用法。分享给大家供大家参考。具体用法分析如下:

sprintf()函数在php官方是说把字符串格式化输出了,本文就来给各位朋友介绍一下在学习sprintf()函数时的一些经验分享,希望能给大家带来帮助.

PHP函数 sprintf() 函数官方定义为:sprintf():把格式化的字符串写入一个变量中

语法为:sprintf(format,arg1,arg2,arg++);

参数:

format:必须,转换格式

arg1 :必须,规定插入 format 字符串中第一个%符号处的参数

arg1 :可选,规定插入 format 字符串中第二个%符号处的参数

arg1++:可选,规定插入 format 字符串中第三、四等%符号处的参数

参数 format 的转换格式,以百分比符号(%)开始到转换字符结束,下面是有可能的format值.

%% ? 返回百分比符号

%b ? 二进制数

%c ? 依照 ASCII 值的字符

%d ? 带符号十进制数

%e ? 可续计数法(比如 1.5e+3)

%u ? 无符号十进制数

%f ? 浮点数(local settings aware)

%F ? 浮点数(not local settings aware)

%o ? 八进制数

%s ? 字符串

%x ? 十六进制数(小写字母)

%X ? 十六进制数(大写字母)

下面是一些demo,代码如下:

// 1. %% :把 %% 替换成 %  

$str = '测试一下 %% 这个参数,会被替换成什么';  

echo sprintf($str);  

//返回结果: 测试一下 % 这个参数,会被替换成什么(%%被替换成一个%) 
// 2. %b :该参数只能替换整型数据,如果是浮点型,只会取整数部分,会忽略小数点后面的数据。如果是非整型数据。返回 0  

$str = '参数 %b 会替换成二进制数';  

$arg = '10';  

echo sprintf($str,$arg);  

//返回结果:参数 1010 会替换成二进制数  

$arg = 10.23;  

echo sprintf($str,$arg);  

//返回结果:参数 1010 会替换成二进制数  

$arg = 'abc';  

echo sprintf($str,$arg);  

//返回结果:参数 0 会替换成二进制数 
// 3. %c 返回字符编码的ASCII码  

$arg = 65;  

$str =  "数字 {$arg} 对应的ASCII码为 %c ";  

echo sprintf($str,$arg);  

//返回结果:数字 65 对应的ASCII码为 A  

  

// 4. %d 将一段字符里的%d替换成int型,数据要求同 $b 相同  

$str = 'ID号为 %d ';  

$arg = -3;  

echo sprintf($str,$arg);  

//返回结果:ID号为 -3  

$arg = 4.5;  

echo sprintf($str,$arg);  

//返回结果:ID号为 4  

$arg = 'abc';  

echo sprintf($str,$arg);  

//返回结果:ID号为 0  

  

// 5. %s - 字符串  

$str = "这是用来测试的sprintf的字符串( %s )。今天消费了%f元。从钟楼到小寨有%d站。上班";  

$arg = '%s';  

echo sprintf($str,$arg,6,5);  

//返回结果:这是用来测试的sprintf的字符串( %s )。今天消费了6.000000元。从钟楼到小寨有5站。上班

至于其它的参数,大家可以试着测试一下.

下面说一下这个函数的一些用途,比如我们在对一张数据表所有数据做多个字段更新时,如果使用循环更新的话,那是很耗费资源的,这里就要用到我们sprintf()函数了.

在数据库批量更新时,我一般采用 case then when end 的语法来做,基本语法如:

UPDATA table  

    SET field = CASE id  

        WHEN 1 THEN 'value1'  

        WHEN 2 THEN 'value2'  

        WHEN 3 THEN 'value3'  

    END  

WHERE id IN (1,2,3)

上面的意思就是说,更新 table 设置 id = 1 的值为 value1, id = 2 的值为 value2 ,id = 3 的值为 value3,这样参数上面的函数将sql语句结合成这样SQL语句,只需一条SQL就可以进行批量更新,具体的方法为:
//比如 id 对应的值为以下数组  

$info = array(1=>'张三',2=>'李四',3=>'王五');  

$ids = implode(',',array_keys($info)) //获取所有的ID字符串  

//组合SQL  

$sql = "UPDATA user SET username = CASE id";  

foreach($info as $id=>$username){  

     $sql .= sprintf("WHEN %d THEN %s",$id,$username);  

}  

$sql .= "END WHERE id IN ($ids)";  

// $model->query($sql)

上面就可以完成批量更新的操作,后面的 where子句确保只有3行数据执行.

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
文件上传类
Oct 09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
php中simplexml_load_file函数用法实例
Nov 12 #PHP
php实现的ping端口函数实例
Nov 12 #PHP
PHP实现下载断点续传的方法
Nov 12 #PHP
php格式化日期实例分析
Nov 12 #PHP
PHP中的Streams详细介绍
Nov 12 #PHP
PHP产生不重复随机数的5个方法总结
Nov 12 #PHP
php一行代码获取文件后缀名实例分析
Nov 12 #PHP
You might like
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
使用flow来规范javascript的变量类型
2019/09/12 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
PyTorch中的C++扩展实现
2020/04/02 Python
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
工程预算与管理应届生求职信
2013/10/06 职场文书
应届生船舶驾驶求职信
2013/10/19 职场文书
金融事务专业求职信
2014/04/25 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
国家助学金感谢信
2015/01/21 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
Python+Appium自动化测试的实战
2021/06/30 Python
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers