Maison > Article > développement back-end > Créez une classe de numéros unique grâce à un identifiant auto-incrémenté en php
Pendant le processus de développement, nos tables de données utilisent généralement des nombres auto-incrémentés comme clé primaire d'id, et id est un type numérique, ce qui n'est pas facile à comprendre. Après avoir converti l'ID en numéro selon un certain format, il est facile de savoir ce que le contenu représente en fonction du numéro.
Par exemple, la table de commande id=20160111197681234 Nous ne savons pas que cet identifiant est l'identifiant de la table de commande simplement en regardant l'identifiant. Cependant, s'il est converti. au numéro O-20160111197681234, c'est très difficile de voir qu'il s'agit d'un enregistrement de la table de commande, et ensuite il peut être recherché dans la table de commande en fonction de l'identifiant.
1. Unique
Générer à l'aide d'un identifiant à incrémentation automatique pour garantir l'unicité
2. 🎜 >Vous pouvez utiliser le reste des chiffres pour correspondre aux lettres afin de créer un nombre plus court
id=1.
Prefix=F
Le numéro conserve 3 chiffres
Le numéro créé est :
F-A-001
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>'; }?>Sortie :
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
Adresse de téléchargement du code source : Cliquez pour voir
20160111197681234 Nous ne savons pas que cet identifiant est l'identifiant de la table de commande simplement en regardant l'identifiant. Cependant, s'il est converti. au numéro O-20160111197681234, il est très difficile de voir qu'il s'agit d'un enregistrement de la table de commande, et ensuite il peut être recherché dans la table de commande en fonction de l'identifiant.
Générer à l'aide d'un identifiant à incrémentation automatique pour garantir l'unicité
Principe de l'algorithme
. id=1
Prefix= FLe numéro conserve 3 chiffres
, alors le numéro créé est :
F-A-001
Le code est la suivante :
<?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
Sortie :
<?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>'; }?>
Cet article explique comment créer une classe de nombres unique via l'identifiant d'incrémentation automatique en php. Pour plus de contenu connexe, veuillez prêter attention au. php site chinois.
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-999Recommandations associées :
Explication sur la sortie de page optimisée en php, compatible avec des exemples d'accès des robots des moteurs de recherche
Par php Appelez ffmpeg pour obtenir des informations vidéo
Utilisez MySQL pour déterminer si le point se trouve dans la zone de polygone spécifiée
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!