数字字符串怎么自增

求助,写了个递归也失败了
数字字符串怎么自增

这边是获取到上一个id
数字字符串怎么自增

一开始是直接+1,然后发现开头的0会被省略掉变成100009.所以来咨询大佬们!
怎么样+1改成0100009,然后到了10之后怎么变成0100010. 这种情况

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
/**
 * @param $str 要自增的基数,例如 00001200
 */
 public function getInc($str)
 {
     $prefix_str = '';
     $strlen = strlen($str);
     for ($i=0; $i < $strlen ; $i++) {
         if($str[$i]>0){
             if($str[$i]==9 && $prefix_str) {
                  $prefix_str = substr($prefix_str,1);
             }
             $suffix_str = (int)substr($str,$i)+1;
             break;
         } else {
             $prefix_str .= '0';
         };
     }
     return isset($suffix_str) ? $prefix_str.$suffix_str : substr($str,1,$strlen-1).'1';
 }

你试一下

2年前 评论
讨论数量: 5
/**
 * @param $str 要自增的基数,例如 00001200
 */
 public function getInc($str)
 {
     $prefix_str = '';
     $strlen = strlen($str);
     for ($i=0; $i < $strlen ; $i++) {
         if($str[$i]>0){
             if($str[$i]==9 && $prefix_str) {
                  $prefix_str = substr($prefix_str,1);
             }
             $suffix_str = (int)substr($str,$i)+1;
             break;
         } else {
             $prefix_str .= '0';
         };
     }
     return isset($suffix_str) ? $prefix_str.$suffix_str : substr($str,1,$strlen-1).'1';
 }

你试一下

2年前 评论
$str = '010008';

for ($i = 1; $i <= 20; $i++) {
    echo str_pad(intval($str) + $i, 6, "0", STR_PAD_LEFT) . '-';
}
2年前 评论

直接数据库零填充不行嘛?

2年前 评论
ononl 2年前
function increNumericString($numeric_string, int $incre_num=1) {
    if (!is_numberic($numeric_string)) {throw new \Exception('传入参数须是数字或数字字符串');}
    if ($incre_num <=0 ) {throw new \Exception('incre_num须大于0');}

    $number = (int)$numeric_string;
    $new_number = $number + $incre_num;

    $string_len = strlen($numeric_string);//原有字符串长度
    $new_number_len = strlen($new_number);//新字符串长度
    //进位不保持前置0个数
    $length = $new_number_len > $string_len ? $new_number_len : $string_len;
    //永远保持前置0个数
    // $length = $string_len + $new_number_len - strlen($number);

    return str_pad((string)$new_number, $length , '0', STR_PAD_LEFT);
}

$str = '0108';
var_dump(increNumericString($str));//string(4) "0109"
$str = '0099';
var_dump(increNumericString($str));
//进位不保持前置0 //string(4) "0100"
//永远保持前置0 //string(5) "00100"
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!