在制作一个自动生成工号的php逻辑中,由于要统一工号的长度就用到了php中数字位不够时左则补0的方法,其实也很简单,下面就说说php数字左则补0的方法。

PHP数字字符串左侧补0自动补齐的方法

方法1:使用 sprintf 函数对数字字符串左则补0的方法

关于 php 中 sprintf() 函数的介绍,可参考本站相关的博文!

例:

// "%06d" 表示格式化一个六位的变量,如果不够在左则补0
echo sprintf("%06d",1);
//000001
echo sprintf("%06d",12);
//000012
echo sprintf("%06d",134);
//000134
echo sprintf("%06d",1234);
//001234
echo sprintf("%06d",12345);
//012345
echo sprintf("%06d",123456);
//123456

方法2:php str_pad() 函数数字字符串左则补0的方法

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 为默认值,表示填充到右则

示例:php str_pad() 函数填充一个六位的数字字符串

echo str_pad(1,6,0,STR_PAD_LEFT);
//000001
echo str_pad(12,6,0,STR_PAD_LEFT);
//000012
echo str_pad(123,6,0,STR_PAD_LEFT);
//000123
echo str_pad(1234,6,0,STR_PAD_LEFT);
//001234
echo str_pad(12345,6,0,STR_PAD_LEFT);
//012345
echo str_pad(123456,6,0,STR_PAD_LEFT);
//123456

方法3:自定义php填充函数

上面方法1与方法2中都是用的 php 中自带的函数实现的数字字符串左则填充补0的方法,下面就来写一个自定义的,可以借鉴一下。

/**
 * @param int $num 被处理的数组字符串
 * @param int $l   处理后字符串的长度
 * @param string $str 被填充的字符
 * @ http://www.feiniaomy.com
 * 
 * @return string 
 */
function disprepair($num,$l = 6,$msg = 0) {
    if(strlen($num) >= $l){
        return $num;
    }
    $s = $l - strlen($num);
    return str_repeat($msg,$s).$num;   
}
echo disprepair(1);
// 000001
echo disprepair(123,4,0);
// 0123