前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3分钟短文 | PHP 数值格式化,前导0还能这么加!

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

作者头像
程序员小助手
发布2020-07-07 15:55:30
1K0
发布2020-07-07 15:55:30
举报
文章被收录于专栏:程序员小助手

引言

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

学习时间

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

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

代码语言:javascript
复制
$s = sprintf('%02d', $digit);

其中格式化 02 表示左侧至少是2位整数,多出的部分不管,不够的补零。

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

代码语言:javascript
复制
echo str_pad($digit, 2, "0", STR_PAD_LEFT);

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

下面是一些 str_pad 的用法:

代码语言:javascript
复制
$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.286863088608
  • sprintf : 0.234171152115

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

写在最后

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

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

Happy coding :_)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 学习时间
  • 深入讨论
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档