>백엔드 개발 >PHP 튜토리얼 >자동 증가된 ID를 기반으로 고유한 숫자 클래스를 생성하는 PHP 메서드

자동 증가된 ID를 기반으로 고유한 숫자 클래스를 생성하는 PHP 메서드

墨辰丷
墨辰丷원래의
2018-05-24 10:10:481496검색

이 글에서는 자체 증가 ID를 기반으로 고유한 숫자 클래스를 생성하기 위한 PHP 관련 지식을 주로 소개합니다. 매우 좋은 참조 값을 가지고 있습니다. 에디터로 살펴보겠습니다

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

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

번호 생성 규칙

1. 고유

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

2 최대한 짧게

숫자를 사용하여 찾을 수 있습니다. 문자를 처리하고 더 짧은 숫자 만들기

알고리즘 원리

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

2 형식은 접두사 + 문자 + 숫자를 사용하며 숫자에는 N 자리만 예약됩니다. . 초과된 숫자의 경우 문자를 사용하여 나머지를 찾습니다.

예:

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

<?php
require &#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-001
9 = F-A-009
10 = F-A-010
99 = F-A-099
100 = F-A-100
999 = F-A-999
1000 = F-B-000
1009 = F-B-009
2099 = F-C-099
3999 = F-D-999
9999 = F-J-999
14999 = F-O-999
99999 = F-VD-999

The 이상이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.


관련 권장 사항:

PHPstrace를 통해 오류 위치를 구현하는 방법

PHPfile_get_contents를 사용하여 http 요청 기능을 보내는 것은 간단합니다

PHP +MySQL 높은 동시성 플러스 거래 처리 문제 잠금 솔루션

위 내용은 자동 증가된 ID를 기반으로 고유한 숫자 클래스를 생성하는 PHP 메서드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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