Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Methode zum Erstellen einer eindeutigen Zahlenklasse basierend auf einer automatisch inkrementierten ID

PHP-Methode zum Erstellen einer eindeutigen Zahlenklasse basierend auf einer automatisch inkrementierten ID

墨辰丷
墨辰丷Original
2018-05-24 10:10:481433Durchsuche

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 =1

Präfix=F

Die 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 = &#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;;
}
?>

Ausgabe:

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

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn