1 min read

PHP printf() 函数

说实话,我感觉我从来就没看懂过 PHP 官网上对任何一个函数的解释,比如这 printf()

printf() 函数与 print() 函数很接近,但后者只是简单地输出,你喂给它什么,它就吐出什么,前者则有格式化处理后再输出。

来看看 PHP 官网上对它的描述:

int printf ( string $format [, mixed $args [, mixed $... ]] )

int 是指函数返回的是一个数值,表示输出的字符串的长度。重点是 $format 这个字符串。

这个 $format 有5个可选部分,并且有一定顺序:

  1. 填充指示符 – 默认为空格
  2. 对齐指示符 – 默认为右对齐
  3. 宽度指示符
  4. 精度指示符
  5. 类型指示符

举一个这5个可选部分全都有的例子:

$num=4;
printf("陈三与%',-10.3f个月亮",$num);

以上语句会输出:

陈三与4.000,,,,,个月亮

来看看上面例子中 $format 部分 「%',-10.3f」,可以分解如下:

  1. % 指示格式化的部分
  2. ', 指示填充符号为 ,,默认为空格,可以不写,但使用其他符号填充时,前面需要加一个单引号来指示,比如 '' 使用单引号填充,比如 '. 使用点号填充
  3. - 负号表示左对齐,填充在右边,默认为右对齐,上述例子中如果没有负号,则会显示成『陈三与,,,,,4.000个月亮』
  4. 10 指示字符串填充到多少宽度,上例中即 4.000,,,, 部分的宽度,10位;你可能会好奇当它太小时会怎样,比如上例中写成2,则根据后一个规则来调整
  5. .3 指示输出的小数位数,只影响浮点类型的数据
  6. f 指示类型,f 表示浮点,s 表示字符串,d 表示整数

至于与 printf() 相近的 sprintf() 函数,返回的是格式化后的字符串,而非长度。

以上。

报告问题 修订

如果你有自建 https 代理的需求,欢迎尝试 Phantom,一键搭建,方便快捷。查看 demo