php中ASCⅡ码的妙用

最近在技术群中有位兄弟提出了一个问题:

想让自增的ID格式化为

A001——A999

B001——B999

……

Z001——Z999,

我最初的构思是循环中,分if条件判断出来进行A——Z字母,

但是这样做有个极大的缺点,代码显得很呆板冗余,26个英文字母等于需要26个判断。

后来有人支招将字母变成ASCⅡ码,恰好A——Z等于ASCⅡ码的65——91;

这样就只需要一个函数进行格式化ID就可以了:

   function format_string($num) {
        
$tag=floor(($num-1)/999);
        
//part1计算asc码
        $part1=65+$tag;

        
//part2计算数字部分
        $part2=$num-999*$tag;

        
$a=strlen($part2);

        
for($i=0;$i<(3-$a);$i++)
        {
         
$b.=0;
        }
        
$str=chr($part1).$b.$part2;
        
return $str;
    }

    
for($i=1;$i<5000;$i++)
    {
         
echo   $str=format_string($i).'<br />';
    }



原文地址:https://www.cnblogs.com/tianxin2001x/p/1632118.html