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 相关文章推荐
我的论坛源代码(三)
Oct 09 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
php的一个简单加密解密代码
Jan 14 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
php中文验证码实现方法
Jun 18 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
php7性能提升的原因详解
Oct 13 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
第六节--访问属性和方法
2006/11/16 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
js友好的时间返回函数
2016/08/24 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
vue实现记事本功能
2019/06/26 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Python将多个list合并为1个list的方法
2018/06/27 Python
Python之list对应元素求和的方法
2018/06/28 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
便利店投资创业计划书
2014/02/08 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
环保公益策划方案
2014/08/15 职场文书
大学生暑假实习总结
2015/07/13 职场文书
小学入学感言
2015/08/01 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书