vprintf()

1. 定义

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

2. 语法

vprintf ( string $format , array $args ) : int

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

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

$format = "网站名称:%s\n负责人电话:%d";
$args = [
    '极速数据',
    '18888888888'
];
$res = vprintf($format, $args);
echo PHP_EOL;
var_dump($res);
/* 输出:
网站名称:极速数据
负责人电话:18888888888
int(57)
*/

5. 延展阅读

  • printf():将字符串按某种特定格式输出。返回被格式化后的字符串长度
  • sprintf():返回被格式化后的字符串
  • vsprintf():返回被格式化后的字符串