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

引言

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

86a96e4cdfa5959966547e9a2823ed6c.png

学习时间

比如有一个需求,对于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种补全的方式,哪种效率更高一些呢?我们通过代码进行测试:

e073ecd65d1f303b4cdc36bf28853bb8.png

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

  • str_pad : 0.286863088608
  • sprintf : 0.234171152115

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

写在最后

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

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

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值