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 相关文章推荐
Smarty模板快速入门
Jan 04 PHP
php 远程图片保存到本地的函数类
Dec 08 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
php中chdir()函数用法实例
Nov 13 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
利用php获得flv视频长度的实例代码
Oct 26 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中大括号作用介绍
2012/03/22 PHP
在PHP中使用redis
2013/11/04 PHP
PHP中list方法用法示例
2016/12/01 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
用jscript启动sqlserver
2007/06/21 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
js实现简单计算器
2015/11/22 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
python实现给字典添加条目的方法
2014/09/25 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
python中的常量和变量代码详解
2018/07/25 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
审计班子对照检查材料
2014/08/27 职场文书
歼十出击观后感
2015/06/11 职场文书
提档介绍信范文
2015/10/22 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server