>  기사  >  백엔드 개발  >  PHP에서 자동 증가 ID를 통해 고유 번호 클래스 생성

PHP에서 자동 증가 ID를 통해 고유 번호 클래스 생성

jacklove
jacklove원래의
2018-06-20 17:12:263133검색

개발 과정에서 우리의 데이터 테이블은 일반적으로 자동 증가 숫자를 id의 기본 키로 사용하며, id는 숫자 유형이므로 이해하기 쉽지 않습니다. ID를 특정 형식에 따라 숫자로 변환하면 숫자를 기반으로 내용이 무엇을 나타내는지 쉽게 알 수 있습니다.

예를 들어 주문 테이블 id=20160111197681234. id를 O-20160111197681234로 변경하면 이 ID가 주문 테이블의 ID인지 알 수 없습니다. 주문 테이블의 기록임을 쉽게 알 수 있으며, 주문 테이블에서 해당 id를 검색하면 알 수 있습니다.

숫자 생성 규칙

1. 고유
고유성을 보장하기 위해 자동 증가 ID를 사용하여 생성

2 최대한 짧게 만드세요
나머지 숫자를 사용하여 해당 문자를 더 짧게 만들 수 있습니다. number

알고리즘 원리

1. 식별을 위한 맞춤 접두어 추가

2. 형식은 접두어 + 문자 + 숫자로 구성됩니다. 숫자를 초과하는 경우 나머지는 다음을 사용하여 계산됩니다. 문자.


<?php/**
 * php 根据自增id创建唯一编号类
 * Date:    2016-11-27
 * Author:  fdipzone
 * Ver:     1.0
 *
 * Func
 * Public create 创建编号
 */class IDCode{ // class start

    /**
     * 创建编号
     * @param  Int    $id         自增id
     * @param  Int    $num_length 数字最大位数
     * @param  String $prefix     前缀
     * @return String
     */
    public static function create($id, $num_length, $prefix){

        // 基数
        $base = pow(10, $num_length);        // 生成字母部分
        $pision = (int)($id/$base);        $word = &#39;&#39;;        while($pision){            $tmp = fmod($pision, 26); // 只使用26个大写字母
            $tmp = chr($tmp + 65);      // 转为字母
            $word .= $tmp;            $pision = floor($pision/26);
        }        if($word==&#39;&#39;){            $word = chr(65);
        }        // 生成数字部分
        $mod = $id % $base;        $digital = str_pad($mod, $num_length, 0, STR_PAD_LEFT);        $code = sprintf(&#39;%s-%s-%s&#39;, $prefix, $word, $digital);        return $code;

    }

} // class end?>
ee.php


<?phprequire &#39;IDCode.class.php&#39;;$test_ids = array(1,9,10,99,100,999,1000,1009,2099,3999,9999,14999,99999);foreach($test_ids as $test_id){    echo $test_id.&#39; = &#39;.IDCode::create($test_id, 3, &#39;F&#39;).&#39;<br>&#39;;
}?>
출력:
1 = F-A-0019 = F-A-00910 = F-A-01099 = F-A-099100 = F-A-100999 = F-A-9991000 = F-B-0001009 = F-B-0092099 = F-C-0993999 = F-D-9999999 = F-J-99914999 = F-O-99999999 = F-VD-999


소스 코드 다운로드 주소: Click to view

개발 과정에서 우리의 데이터 테이블은 일반적으로 자체 증가하는 숫자를 기본 키로 사용합니다. id이고, id는 숫자형이어서 이해하기 쉽지 않습니다. ID를 특정 형식에 따라 숫자로 변환하면 숫자를 기반으로 내용이 무엇을 나타내는지 쉽게 알 수 있습니다.

예를 들어 order table id=

20160111197681234라는 숫자만 보면 이 id가 order table의 id인지 알 수 없습니다. 주문 테이블의 기록임을 쉽게 알 수 있으며, 주문 테이블에서 해당 id를 검색할 수 있습니다.

숫자 생성 규칙

1. 고유

고유성을 보장하기 위해 자동 증가 ID를 사용하여 생성

2. 숫자의 나머지 부분을 사용하여 해당 문자를 찾아 더 짧은 숫자를 만들 수 있습니다. 알고리즘 원리

1. 식별을 위한 맞춤 접두사 추가

2. 형식은 접두사 + 문자 + 숫자로 구성됩니다. 숫자를 초과하는 경우 나머지 숫자를 사용합니다. 예: id=1 Prefix=F 숫자는 3자리입니다.생성된 숫자는
F-A-001

코드는 다음과 같습니다:


IDCode. class.php

<?php/**
 * php 根据自增id创建唯一编号类
 * Date:    2016-11-27
 * Author:  fdipzone
 * Ver:     1.0
 *
 * Func
 * Public create 创建编号
 */class IDCode{ // class start

    /**
     * 创建编号
     * @param  Int    $id         自增id
     * @param  Int    $num_length 数字最大位数
     * @param  String $prefix     前缀
     * @return String
     */
    public static function create($id, $num_length, $prefix){

        // 基数
        $base = pow(10, $num_length);        // 生成字母部分
        $pision = (int)($id/$base);        $word = &#39;&#39;;        while($pision){            $tmp = fmod($pision, 26); // 只使用26个大写字母
            $tmp = chr($tmp + 65);      // 转为字母
            $word .= $tmp;            $pision = floor($pision/26);
        }        if($word==&#39;&#39;){            $word = chr(65);
        }        // 生成数字部分
        $mod = $id % $base;        $digital = str_pad($mod, $num_length, 0, STR_PAD_LEFT);        $code = sprintf(&#39;%s-%s-%s&#39;, $prefix, $word, $digital);        return $code;

    }

} // class end?>

demo.php

<?phprequire &#39;IDCode.class.php&#39;;$test_ids = array(1,9,10,99,100,999,1000,1009,2099,3999,9999,14999,99999);foreach($test_ids as $test_id){    echo $test_id.&#39; = &#39;.IDCode::create($test_id, 3, &#39;F&#39;).&#39;<br>&#39;;
}?>

출력:

1 = F-A-0019 = F-A-00910 = F-A-01099 = F-A-099100 = F-A-100999 = F-A-9991000 = F-B-0001009 = F-B-0092099 = F-C-0993999 = F-D-9999999 = F-J-99914999 = F-O-99999999 = F-VD-999

이 글에서는 PHP의 자동 증가 ID를 통해 고유한 숫자 클래스를 만드는 방법을 설명합니다. 더 많은 관련 콘텐츠를 보려면 주의하세요. PHP 중국어 웹사이트로 이동합니다.

관련 권장 사항:
검색 엔진 로봇 액세스와 호환되는 PHP 최적화 페이지 출력 예에 대한 설명

PHP를 통해 ffmpeg를 호출하여 비디오 정보 얻기

mysql을 사용하여 포인트가 있는지 확인 지정된 폴리곤 영역 Inside

위 내용은 PHP에서 자동 증가 ID를 통해 고유 번호 클래스 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.