PHP erstellt eine eindeutige Zahlenklasse basierend auf einer automatisch inkrementierten ID

jacklove
Freigeben: 2023-03-31 06:16:01
Original
2441 Leute haben es durchsucht

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.

Regeln für die Nummernerstellung

1. Eindeutig
Generieren Sie mit automatisch inkrementierender ID, um die Eindeutigkeit sicherzustellen

Machen Sie es so kurz wie möglich
Sie können Verwenden Sie Zahlen, um den Rest zu finden. Verarbeiten Sie die entsprechenden Buchstaben, um kürzere Zahlen zu erstellen.

Algorithmusprinzip

1. Fügen Sie ein benutzerdefiniertes Präfix zur Identifizierung hinzu

2 + Zahlen Zusammensetzung, nur N Ziffern sind für Zahlen reserviert, zur Berechnung des Restes werden Buchstaben verwendet

Zum Beispiel:
id=1
Präfix=F
3 Ziffern sind für Zahlen reserviert
dann ist 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?>
Nach dem Login kopieren

demo.php

<?phprequire &#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;;
}?>
Nach dem Login kopieren

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
Nach dem Login kopieren



Das obige ist der detaillierte Inhalt vonPHP erstellt eine eindeutige Zahlenklasse basierend auf einer automatisch inkrementierten ID. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage