PHP 如何给数字前面补零 ,固定位数补0

在设计唯一编号的时候,需要固定位数的数字,比如需要固定四位数格式:

比如:

图片

YSZC后面的0001,以下一组数字,如何让它自增呢?

1->0001
56->0056
288->0288
1992->1992

我们可以使用php内置函数str_pad() 函数把字符串填充为新的长度。

str_pad(string,length,pad_string,pad_type)
//参数    描述
string      //必需。规定要填充的字符串。
length      //必需。规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。
pad_string  //可选。规定供填充使用的字符串。默认是空白。
pad_type    //可选。规定填充字符串的哪边。
            //可能的值:
            STR_PAD_BOTH - //填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
            STR_PAD_LEFT - //填充字符串的左侧。
            STR_PAD_RIGHT - //填充字符串的右侧。默认。

例子,我写了一个方法,先判断数据表里面有没有数据,没有就初始化0001,否则调用自增ID。

/**
 * @desc 协议编号
 * @author  磊丰
 * @Date  2021/12/1 16:23
 * @param $num
 * @return string
 */
public function inc_privacy_no($num)
{
    $start = "0001";
    $data =::find('id');    //这里是查询表里的一条最新的sql数据,自己写
    if(empty($data)){
        return $num.$start;
    }
    $data_no = str_pad(($data['id']+1),4,"0",STR_PAD_LEFT);

    return $num.$data_no;
}

调用方法

$this->inc_privacy_no("YSZC")
本作品采用《CC 协议》,转载必须注明作者和本文链接
程序员的福利:免费获取 JetBrains 全家桶激活码 推荐:【点击这里获取 。。。激活码适用:AppCode, CLion, DataGrip, DataSpell, dotCover, dotMemory, dotTrace, goland, IntelliJ IDEA Ultimate, phpstorm, pycharm, ReSharper
Laravel00
讨论数量: 2
czy2020

sprintf("%05d", 1) 结果 00001

2年前 评论

用sprintf vsprintf 不好么

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
资深程序猿 @ XX科技
文章
62
粉丝
37
喜欢
249
收藏
574
排名:282
访问:3.3 万
私信
所有博文
社区赞助商