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的FTP学习(一)[转自奥索]
Oct 09 PHP
第七节 类的静态成员 [7]
Oct 09 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php Smarty模板生成html文档的方法
Apr 12 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
linux下php上传文件注意事项
Jun 11 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
php 广告点击统计代码(php+mysql)
Feb 21 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多层数组与对象的转换实例代码
2013/08/05 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
javascript json2 使用方法
2010/03/16 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
验证码按回车不变解决方法
2013/03/29 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
微信小程序实现消息框弹出动画
2020/04/18 Javascript
详解Python当中的字符串和编码
2015/04/25 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
python连接数据库的方法
2017/10/19 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python 命名规范知识点汇总
2020/02/14 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
教师旷工检讨书
2014/01/18 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
国际贸易实训报告
2014/11/05 职场文书
升职感谢信
2015/01/22 职场文书
钢琴师观后感
2015/06/12 职场文书
车辆管理制度范本
2015/08/05 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android