搜索

首页  >  问答  >  正文

将数字封装为6至8位字符限制的方法

<p><br /></p> <pre class="brush:php;toolbar:false;">public static function generateReceiptNumber(int $id) { $receipt_number = sprintf('%06d', $id % 100000000); return $receipt_number; }</pre> <p>我正在使用以上代码来将传入的$id转换为最小6位数、最大8位数的数字。例如:000001 - 99999999</p> <p>但是这段代码存在一个缺陷,当$id等于100000000时,它将返回000000,我应该怎样改进以上的代码来返回000001呢?</p> <p>依次类推,$id是数据库的自增id。</p> <p>之所以想要实现这一点,是因为我有一个显示文本框,其文本限制只有8位数,我只能将数字重新从000001开始计数并继续重复。</p>
P粉315680565P粉315680565553 天前636

全部回复(2)我来回复

  • P粉403804844

    P粉4038048442023-08-11 09:20:43



    
    
    public static function generateReceiptNumber(int $id)
    {
        // 处理特殊情况,当$id为100000000时     if ($id === 100000000) {
            return '000001';
        }
    
        // 使用取模运算将ID限制在范围0到99,999,99     $limited_id = $id % 100000000;
        
        // 格式化限制的ID,使用前导零确保至少6位     $receipt_number = sprintf('%06d', $limited_id);
        
        return $receipt_number;
    }
    


    请查看这个答案是否能帮助

    回复
    0
  • P粉863295057

    P粉8632950572023-08-11 00:36:54

    这怎么样:

    function generateReceiptNumber(int $id)
    {
        while($id>=100000000)
            $id -= 100000000 - 1;
        return sprintf('%06d', $id);
    }

    回复
    0
  • 取消回复