PHP之sprintf函数用法详解

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • PHP数字前补0的自带函数sprintf 和number_format的用法(详解)

    很多时候我们需要对数字进行格式化,比如位数不足前面加0补足.用PHP可以很轻易实现,因为PHP自带了相关功能的函数. <?php //生成4位数,不足前面补0 $var=sprintf("%04d", 2); echo $var;//结果为0002 echo date('Y_m_d', time()).'_'.sprintf('d', rand(0,99)); echo sprintf('%05s',444);//输出5为字符串,不足以0补充 ?> sprintf()函数

  • php的sprintf函数的用法 控制浮点数格式

    控制浮点数打印格式 浮点数的打印和格式控制是sprintf 的一大常用功能,浮点数使用格式符"%f"控制,默认保留小数点后6 位数字,比如: 复制代码 代码如下: sprintf("%f", 3.1415926); //结果:"3.141593" 但,有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:"%m.nf"格式,其中m 表示打印数字的整体宽度,n 表示小数点后的位数.比如: 复制代码 代码如下: sprintf

  • PHP number_format() 函数定义和用法

    number_format() 函数通过千位分组来格式化数字. 语法 number_format(number,decimals,decimalpoint,separator) 参数 描述 number 必需.要格式化的数字. 如果未设置其他参数,则数字会被格式化为不带小数点且以逗号 (,) 作为分隔符. decimals 可选.规定多少个小数.如果设置了该参数,则使用点号 (.) 作为小数点来格式化数字. decimalpoint 可选.规定用作小数点的字符串. separator 可选.规定

  • PHP自带函数给数字或字符串自动补齐位数

    先来看个例子:需求为生成4位数,不足前面补0 <?php //生成4位数,不足前面补0 $var=sprintf("%04d", 2); echo $var;//结果为0002 echo date('Y_m_d', time()).'_'.sprintf('d', rand(0,99)); ?> sprintf()函数 有没有感觉很像c语言 1. 语法 sprintf(format,arg1,arg2,arg++) 参数 描述 format 必需.转换格式. arg1 必需

  • PHP之sprintf函数用法详解

    本文实例讲述了PHP中sprintf函数的用法.分享给大家供大家参考.具体用法分析如下: sprintf()函数在php官方是说把字符串格式化输出了,本文就来给各位朋友介绍一下在学习sprintf()函数时的一些经验分享,希望能给大家带来帮助. PHP函数 sprintf() 函数官方定义为:sprintf():把格式化的字符串写入一个变量中 语法为:sprintf(format,arg1,arg2,arg++); 参数: format:必须,转换格式 arg1 :必须,规定插入 format

  • JavaScript中eval()函数用法详解

    eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行. 如果参数是一个表达式,eval() 函数将执行表达式.如果参数是Javascript语句,eval()将执行 Javascript 语句. 语法 复制代码 代码如下: eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. eval()函数用法详解: 此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eva

  • Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要用lambda函数? 先举一个例子:将一个列表里的每个元素都平方. 先用def来定义函数,代码如下 def sq(x): return x*x map(sq,[y for y in range(10)]) 再用lambda函数来编写代码 map(lambda x: x*x,[y for y in r

  • Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用!. a.flatten():a是个数组,a.flatten()就是把a降到一维,默认是按行的方向降 . a.flatten().A:a是个矩阵,降维后还是个矩阵,矩阵.A(等效于矩阵.getA())变成了数组.具体看下面的例子: 1.用于array(数组)对象 >>> from n

  • pytorch中torch.max和Tensor.view函数用法详解

    torch.max() 1. torch.max()简单来说是返回一个tensor中的最大值. 例如: >>> si=torch.randn(4,5) >>> print(si) tensor([[ 1.1659, -1.5195, 0.0455, 1.7610, -0.2064], [-0.3443, 2.0483, 0.6303, 0.9475, 0.4364], [-1.5268, -1.0833, 1.6847, 0.0145, -0.2088], [-0.86

  • python isinstance函数用法详解

    这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 isinstance() 函数来判断一个对象是否是一个已知的类型类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系. isinstance() 会认为子类是一种父类类型,考虑继承关系. 如果要判断两个类型是否相同推荐使用 isinstance(). 语法

  • C++ min/max_element 函数用法详解

    同样是O(n)复杂度,但是经过不严谨 测试,使用库函数的速度远超for循环的遍历找最值 /* param begin : 序列起始地址(迭代器) param end : 序列结束地址(迭代器) return : 序列中最小元素地址(迭代器) */ min_element(begin, end); /* param begin : 序列起始地址(迭代器) param end : 序列结束地址(迭代器) return : 序列中最大元素地址(迭代器) */ max_element(begin, en

  • python yield和Generator函数用法详解

    这篇文章主要介绍了python yield和Generator函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先我们从一个小程序导入,各定一个list,找出其中的素数,我们会这样写 import math def is_Prims(number): if number == 2: return True //除2以外的所有偶数都不是素数 elif number % 2 == 0: return False //如果一个数能被除1和

  • pandas dataframe 中的explode函数用法详解

    在使用 pandas 进行数据分析的过程中,我们常常会遇到将一行数据展开成多行的需求,多么希望能有一个类似于 hive sql 中的 explode 函数. 这个函数如下: Code # !/usr/bin/env python # -*- coding:utf-8 -*- # create on 18/4/13 import pandas as pd def dataframe_explode(dataframe, fieldname): temp_fieldname = fieldname

  • C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符.主要使用两个函数,分别是 fgetc() 和 fputc(). 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符.fgetc() 的用法为: int fgetc (FILE *fp); fp 为文件指针.fgetc() 读

随机推荐