数字字符串怎么自增

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

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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论

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