Heim >Backend-Entwicklung >PHP-Tutorial >PHP erstellt eine eindeutige Zahlenklasse basierend auf einer automatisch inkrementierten ID
Während des Entwicklungsprozesses verwenden unsere Datentabellen im Allgemeinen sich selbst erhöhende Zahlen als ID-Primärschlüssel, und ID ist ein numerischer Typ, der nicht leicht zu verstehen ist. Nachdem wir die ID gemäß einem bestimmten Format in eine Zahl umgewandelt haben, ist es anhand der Zahl leicht zu erkennen, was der Inhalt darstellt.
Zum Beispiel die Bestelltabellen-ID=20160111197681234 Wir wissen jedoch nicht, ob diese ID die ID der Bestelltabelle ist, wenn sie konvertiert wird Zur Nummer O-20160111197681234 ist es sehr schwierig zu erkennen, dass es sich um einen Datensatz der Bestelltabelle handelt, und kann dann anhand der ID in der Bestelltabelle gesucht werden.
1. Mit automatisch inkrementierender ID generieren, um Eindeutigkeit sicherzustellen
Sie können den Rest der Zahlen verwenden, um Buchstaben zu entsprechen, um eine kürzere Zahl zu erstellen
2. Das Format besteht aus Präfix + Buchstaben + Zahlen. Wenn es mehr als 10 Ziffern gibt, werden Buchstaben verwendet, um den Rest zu finden:
id=1Präfix = F
Die Nummer behält 3 Ziffern, dann lautet die erstellte Nummer:
F-A-001
Die Der Code lautet wie folgt:
demo.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 = ''; 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?>
Ausgabe:
<?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
Quellcode-Download-Adresse: Zum Anzeigen klicken
Während des Entwicklungsprozesses verwenden unsere Datentabellen im Allgemeinen selbst- Fügen Sie eine Zahl als Primärschlüssel der ID hinzu, und die ID ist numerisch, was nicht leicht zu verstehen ist. Nachdem wir die ID gemäß einem bestimmten Format in eine Zahl umgewandelt haben, ist es anhand der Zahl leicht zu erkennen, was der Inhalt darstellt. Zum Beispiel die Bestelltabellen-ID=
Wir wissen jedoch nicht, ob diese ID die ID der Bestelltabelle ist, wenn sie konvertiert wird Zur Nummer
O-20160111197681234 ist es sehr schwierig zu erkennen, dass es sich um einen Datensatz der Bestelltabelle handelt, und kann dann anhand der ID in der Bestelltabelle gesucht werden. Regeln für die Nummernerstellung
1. Mit automatisch inkrementierender ID generieren, um Eindeutigkeit sicherzustellen
Algorithmusprinzip
1. Fügen Sie ein benutzerdefiniertes Präfix hinzu, um
2. Das Format besteht aus Präfix + Buchstaben + Zahlen. Wenn es mehr als 10 Ziffern gibt, werden Buchstaben verwendet, um den Rest zu finden:
, dann lautet die erstellte Nummer:
F-A-001
Die Der Code lautet wie folgt:
IDCode.class.php
demo.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 = ''; 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?>Ausgabe:
Das Obige ist der Inhalt von PHP, das eine eindeutige Zahlenklasse basierend auf der sich selbst erhöhenden ID erstellt . Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!
<?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