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/archive/2009/12/25/1632118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值