개발 과정에서 우리의 데이터 테이블은 일반적으로 자동 증가 숫자를 id의 기본 키로 사용하며, id는 숫자 유형이므로 이해하기 쉽지 않습니다. ID를 특정 형식에 따라 숫자로 변환하면 숫자를 기반으로 내용이 무엇을 나타내는지 쉽게 알 수 있습니다.
예를 들어 order table id=20160111197681234라는 숫자만 보면 이 id가 order table의 id인지 알 수 없습니다. 주문 테이블의 기록임을 쉽게 알 수 있으며, 주문 테이블에서 해당 id를 검색할 수 있습니다. 숫자 생성 규칙
2. 가능한 한 짧게
알고리즘 원리
2. 형식은 접두사 + 문자 + 숫자로 구성됩니다. 숫자가 숫자를 초과하는 경우 나머지는 문자를 사용하여 계산됩니다. id=1
Prefix = F3자리 숫자로 예약되어 있습니다
생성된 번호는F-A-001
코드는 다음과 같습니다.
<?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 = ''; while($pision){ $tmp = fmod($pision, 26); // 只使用26个大写字母 $tmp = chr($tmp + 65); // 转为字母 $word .= $tmp; $pision = floor($pision/26); } if($word==''){ $word = chr(65); } // 生成数字部分 $mod = $id % $base; $digital = str_pad($mod, $num_length, 0, STR_PAD_LEFT); $code = sprintf('%s-%s-%s', $prefix, $word, $digital); return $code; } } // class end?>데모.php
<?phprequire 'IDCode.class.php';$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.' = '.IDCode::create($test_id, 3, 'F').'<br>'; }?>출력 :
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!