In diesem Artikel werden hauptsächlich die relevanten PHP-Kenntnisse vorgestellt, um eine eindeutige Zahlenklasse basierend auf der sich selbst erhöhenden ID zu erstellen. Hat einen sehr guten Referenzwert. Werfen wir einen Blick mit dem Editor unten
Während des Entwicklungsprozesses verwenden unsere Datentabellen im Allgemeinen automatisch inkrementierende Zahlen als Primärschlüssel der ID, 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 Wenn wir uns nur die ID ansehen, wissen wir nicht, dass diese ID die ID der Bestelltabelle ist. Aber es wird in die Nummer O-20160111197681234 konvertiert. Es ist leicht zu erkennen, dass es sich um einen Datensatz der Bestelltabelle handelt, und kann dann anhand der Bestelltabelle gesucht werden die ID.
Regeln zur Nummernerstellung
1 Eindeutig
wird mithilfe der automatisch inkrementierenden ID generiert. garantierte Einzigartigkeit
2. So kurz wie möglich
kann mit dem Rest der dem Buchstaben entsprechenden Zahl verarbeitet werden, um eine kürzere Zahl zu erstellen
Algorithmusprinzip
1. Fügen Sie ein benutzerdefiniertes Präfix hinzu, um
2. Das Format besteht aus Präfix + Buchstaben + Zahlen. Für überzählige Zahlen sind nur N Ziffern reserviert, die mit Buchstaben übereinstimmen
Zum Beispiel: id =1Präfix=FDie Nummer behält 3 Ziffern, dann lautet die erstellte Nummer:F-A-001
Der Code lautet wie folgt: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 = ''; 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 ?>
demo.php
<?php require '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-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
PHPSo finden Sie die Fehlerursache mithilfe von Strace
PHPDie Verwendung von file_get_contents zum Senden der HTTP-Anfragefunktion ist einfach
PHP+MySQL hoch Parallelitätssperrtransaktion Problemlösung
Das obige ist der detaillierte Inhalt vonPHP-Methode zum Erstellen einer eindeutigen Zahlenklasse basierend auf einer automatisch inkrementierten ID. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!