Maison > développement back-end > Problème PHP > Comment générer des numéros de série uniques en php

Comment générer des numéros de série uniques en php

藏色散人
Libérer: 2023-03-08 11:58:02
original
3190 Les gens l'ont consulté

Comment générer des numéros de série uniques en PHP : 1. Générez des numéros de série uniques via "str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);" 2. Des fonctions telles que imploser et array_map génère des numéros de série uniques.

Comment générer des numéros de série uniques en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3.

Un résumé des méthodes permettant à PHP de générer des nombres uniques et non répétitifs

Comment générer des nombres uniques et non répétitifs en PHP ? Par exemple, les commandes nécessitent souvent que nous générions un numéro unique. Dans des circonstances normales, le uniqid() fourni par PHP peut répondre aux besoins, mais en période de forte concurrence, nous avons besoin d'une meilleure solution pour générer des nombres uniques et non répétitifs. Cet article partagera un exemple de code, j'espère qu'il sera utile à tout le monde.

Il y a quelque temps, il y avait un projet de commerce électronique qui nécessitait de générer un numéro de commande. La considération à cette époque était très simple, prendre l'heure du système et ajouter un nombre aléatoire, ou utiliser la méthode uniqid(). Examinez attentivement la méthode ci-dessus. Lorsque le client achète une petite quantité, la possibilité de duplication de commande est nulle. Cependant, une duplication des numéros de commande générés pendant la période d'achat maximale est très probable.

Premier type

return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
Copier après la connexion

Deuxième type

return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
Copier après la connexion

Troisième type

//生成24位唯一订单号码,格式:YYYY-MMDD-HHII-SS-NNNN,NNNN-CC,其中:YYYY=年份,MM=月份,DD=日期,HH=24格式小时,II=分,SS=秒,NNNNNNNN=随机数,CC=检查码
 @date_default_timezone_set("PRC");
 while(true){
  //订购日期
  $order_date = date('Y-m-d');
  //订单号码主体(YYYYMMDDHHIISSNNNNNNNN)
  $order_id_main = date('YmdHis') . rand(10000000,99999999);
  //订单号码主体长度
  $order_id_len = strlen($order_id_main);
  $order_id_sum = 0;
  for($i=0; $i<$order_id_len; $i++){
  $order_id_sum += (int)(substr($order_id_main,$i,1));
  }
  //唯一订单号码(YYYYMMDDHHIISSNNNNNNNNCC)
  $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,&#39;0&#39;,STR_PAD_LEFT);
Copier après la connexion

Quatrième type Type :

J'ai cherché en ligne et j'ai trouvé que l'idée de ce camarade de classe est plutôt bonne, redtamo. Veuillez aller la vérifier pour plus de détails. Je vais donner un bref aperçu de cette méthode qui utilise les lettres anglaises, l'année et le mois. et microsecondes, nombres aléatoires, la possibilité de répétition est considérablement réduite, ce qui est quand même très bien. L'utilisation des lettres est très représentative, une lettre correspond à une année, un total de 16 chiffres, ni plus, ni moins, haha.

<?php
$yCode = array(&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;);
$orderSn = $yCode[intval(date(&#39;Y&#39;)) - 2011] . strtoupper(dechex(date(&#39;m&#39;))) . date(&#39;d&#39;) . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf(&#39;%02d&#39;, rand(0, 99));
?>
Copier après la connexion

Effet générateur :

A422694333616096
Copier après la connexion

Hélas, c'est dommage que cette méthode n'ait pas été utilisée dans le projet final, disant qu'il n'y avait pas besoin de faire si compliqué, - -!

Les quatre méthodes ci-dessus sont tout le contenu partagé avec vous dans cet article. J'espère que vous l'aimerez.

[Recommandé : Tutoriel vidéo PHP]

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal