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中MVC模式的模板引擎开发经验分享
Mar 23 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
php教程之phpize使用方法
Feb 12 PHP
smarty表格换行实例
Dec 15 PHP
php通过asort()给关联数组按照值排序的方法
Mar 18 PHP
php身份证号码检查类实例
Jun 18 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 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
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
javascript内置对象arguments详解
2014/03/16 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
python中self原理实例分析
2015/04/30 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
django实现模型字段动态choice的操作
2020/04/01 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
zooplus意大利:在线宠物商店
2019/08/07 全球购物
见习期自我鉴定
2013/11/07 职场文书
秘书岗位职责
2013/11/18 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
初中班长竞选稿
2015/11/20 职场文书
社区结对共建协议书
2016/03/23 职场文书
Redis中一个String类型引发的惨案
2021/07/25 Redis
asyncio异步编程之Task对象详解
2022/03/13 Python
Python几种酷炫的进度条的方式
2022/04/11 Python