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 相关文章推荐
用PHP进行MySQL删除记录操作代码
Jun 07 PHP
php 文章采集正则代码
Dec 28 PHP
php下载文件的代码示例
Jun 29 PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
destoon后台网站设置变成空白的解决方法
Jun 21 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
PHP 代码简洁之道(小结)
Oct 16 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
星际实力自我测试
2020/03/04 星际争霸
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
PHP中的串行化变量和序列化对象
2006/09/05 PHP
PHP读取xml方法介绍
2013/01/12 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
php 问卷调查结果统计
2015/10/08 PHP
Bootstrap每天必学之简单入门
2015/11/19 Javascript
js运动应用实例解析
2015/12/28 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
简单的Python的curses库使用教程
2015/04/11 Python
python 队列详解及实例代码
2016/10/18 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
python用户管理系统
2018/03/13 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
详解python中@的用法
2019/03/27 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
金融专业大学生自我评价
2014/01/09 职场文书
前台文员我鉴定
2014/01/12 职场文书
高中军训感言600字
2014/03/11 职场文书
安全生产月演讲稿
2014/05/09 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript