Heim > Artikel > Backend-Entwicklung > Erstellen Sie eine eindeutige Zahlenklasse durch automatisches Inkrementieren der ID in PHP
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 Wir wissen jedoch nicht, ob es sich bei dieser ID um die ID der Bestelltabelle handelt 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
id=1 zu entsprechen
Präfix=FDie Nummer behält 3 Ziffern
Die erstellte Nummer ist:
F-A-001
Der Code lautet wie folgt:
<?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?>
<?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>';
}?>
Ausgabe:
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
Download-Adresse des Quellcodes: Zum Anzeigen klicken
Während des Entwicklungsprozesses werden unsere Datentabellen angezeigt Im Allgemeinen werden selbsterhöhende Zahlen als ID-Primärschlüssel verwendet, und die 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.
20160111197681234
Wir wissen jedoch nicht, ob es sich bei dieser ID um die ID der Bestelltabelle handelt Zur NummerO-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
Sie können den Rest der Zahlen verwenden, um Buchstaben zu entsprechen, um eine kürzere Zahl zu erstellen
Algorithmusprinzip
1. Fügen Sie ein benutzerdefiniertes Präfix hinzu, um
Die Nummer behält 3 Ziffern
, dann lautet die erstellte Nummer:F-A-001
Die 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
<?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>'; }?>Ausgabe:
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-999In diesem Artikel wird erläutert, wie Sie mithilfe der automatischen Inkrementierungs-ID in PHP eine eindeutige Zahlenklasse erstellen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website. Verwandte Empfehlungen:
Erläuterung zur PHP-optimierten Seitenausgabe, kompatibel mit Beispielen für den Zugriff von Suchmaschinenrobotern
über PHP Rufen Sie ffmpeg auf, um Videoinformationen zu erhaltenVerwenden Sie MySQL, um zu bestimmen, ob der Punkt innerhalb des angegebenen Polygonbereichs liegtDas obige ist der detaillierte Inhalt vonErstellen Sie eine eindeutige Zahlenklasse durch automatisches Inkrementieren der ID in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!