vsprintf()

1. 定义

该函数作用与sprintf()函数类似,返回被格式化后的字符串。 但该函数接收一个数组参数,而不是一系列可变数量参数。

2. 语法

vsprintf ( string $format , array $args ) : string

3. 参数说明

参数 可选性 数据类型 描述
$format 必需 字符串 参数格式,例如%s\t%d
$args 必需 数组 需要被格式化的字符串数组

其中$format的格式为:%[flags][width][.precision]specifier

flags的值有五种:

  • -:表示输出时为左对齐,默认为右对齐
  • +:用加号+前缀正数;默认仅为负数,前缀为负号
  • 空格:默认用空格填充结果(位数)
  • 0:左边的数字使用0填充,如果是字符串也可以用0填充右边的内容
  • ':使用单引号包裹的字符,可以被用来填充结果

width表示允许最长输出的位数。

precision根据标识符的不同含义也不同:

  • 对于eEfF标识符来说,该值表示小数点后保留的位数
  • 对于gG标识符来说,该值表示允许被输出的最大有效位数
  • 对于s标识符来说,该值表示允许被输出的最大字符数
specifier标识符 说明
% 字面量百分号
b 二进制整数
c ASCII码字符
d 带符号(正负号)的十进制整数
e 科学计数法数
E 使用大写字母E表示的科学计数法
f 带本地属性的浮点数
F 不带本地属性的浮点数
g 总位数超过14位时,将转为科学计数法(E)表达,后面的值被忽略
G g一样
o 十进制整数
s 字符串
u 无符号十进制整数
x 小写形式的十六进制整数
X 大写形式的十六进制整数

4. 示例

<?php

// vsprintf()
// 返回被格式化后的字符串

$args = [
    '极速教程',
    'https://www.jisuapi.com/'
];
$format = "网站名称:%s\t网址:%s";
$res = vsprintf($format, $args);
var_dump($res);// 输出:string(61) "网站名称:极速教程  网址:https://www.jisuapi.com/"

5. 延展阅读

  • sprintf():返回被格式化后的字符串
  • vprintf():输出被格式化后的字符串,并返回输出字符串的长度