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 相关文章推荐
在任意字符集下正常显示网页的方法一
Apr 01 PHP
解析php如何将日志写进syslog
Jun 28 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
PHP中返回引用类型的方法
Apr 03 PHP
PHP发送短信代码分享
Aug 11 PHP
php获取远程文件内容的函数
Nov 02 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
Thinkphp事务操作实例(推荐)
Apr 01 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 PHP
Yii框架 session 数据库存储操作方法示例
Nov 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
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
python中sets模块的用法实例
2014/09/30 Python
python实现Floyd算法
2018/01/03 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
党员创先争优承诺书
2014/03/26 职场文书
倡议书范文
2014/04/16 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
员工手册董事长致辞
2015/07/29 职场文书
《普罗米修斯》教学反思
2016/02/22 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
python中pycryto实现数据加密
2022/04/29 Python
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript