3分钟短文 - PHP 数值格式化,前导0还能这么加

HarmonyOS

  引言

  编写程序过程中,经常需要处理小数,或整型数据。比如订单号,通过拼接多段业务数据成为新的字符串。今天我们来说一下,如何在数值格式化的时候。为其进行前导零补全。

  学习时间

  比如有一个需求,对于0-9的正整数进行格式化,使其输出 00-09。在 PHP 中应该怎么写呢?

  首先肯定是从 C 语言就继承来的 sprintf 这个格式化函数。

  $s = sprintf('%02d', $digit);其中格式化 02 表示左侧至少是2位整数,多出的部分不管,不够的补零。

  既然都是字符串格式化,我们借助 PHP 提供的字符串补全函数 str_pad,也可以达到相同的效果。代码这样写:

  echo str_pad($digit, 2, "0", STR_PAD_LEFT);注意参数,2是补全的长度,超过的不用补,不够的至少补到2位。“0”是用于补全的字符,STR_PAD_LEFT 常量用于指定左补全。

  下面是一些 str_pad 的用法:

  $input = "Alien";echo str_pad($input, 10); // 输出"Alien "echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 输出"-=-=-Alien"echo str_pad($input, 10, "_", STR_PAD_BOTH); // 输出"__Alien___"echo str_pad($input, 6 , "___"); // 输出"Alien_"深入讨论

  上面给出的2种补全的方式,哪种效率更高一些呢?我们通过代码进行测试:

  上述代码在 PHP 5.3 的基准测试中,结果是这样的:

  str_pad : 0.286863088608sprintf : 0.234171152115可以看到,在较为频繁地使用前导处理时,格式化函数 sprintf 所使用的时间更少,也从侧面证明了这个老牌函数的坚固可用。

  写在最后

  本文通过两个 PHP 函数演示了对于数值的前导补零操作,并且经过测试也发现使用频次较高的 sprintf 函数更胜一筹。

  我们也提倡在代码中使用 sprintf 用于格式化,其功能非常可靠。特别需要注意的是,格式化元字符对于特殊字符的处理一定要慎重。

  Happy coding :_)

  我是 @程序员小助手 ,持续分享编程知识,欢迎。

标签: HarmonyOS