>  기사  >  백엔드 개발  >  PHP에서 고유 일련번호를 생성하는 방법

PHP에서 고유 일련번호를 생성하는 방법

藏色散人
藏色散人원래의
2021-03-03 09:28:373051검색

PHP에서 고유 일련번호를 생성하는 방법: 1. "str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);"를 통해 고유 일련번호를 생성합니다. 2. implode 및 array_map 등을 통해 함수 구현 고유한 시퀀스 번호를 생성합니다.

PHP에서 고유 일련번호를 생성하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터.

PHP가 반복되지 않는 고유 숫자를 생성하는 방법 요약

PHP는 반복되지 않는 고유 숫자를 어떻게 생성합니까? 예를 들어 주문 시 고유 번호를 생성해야 하는 경우가 많습니다. 일반적인 상황에서는 PHP에서 제공하는 uniqid()가 요구 사항을 충족할 수 있지만 동시성이 높은 경우 고유하고 반복되지 않는 숫자를 생성하는 더 나은 솔루션이 필요합니다. 이 기사에서는 예제 코드를 공유할 예정이며, 모든 사람에게 도움이 되기를 바랍니다.

얼마 전 전자상거래 프로젝트를 진행하면서 주문번호를 생성해야 했습니다. 당시 고려사항은 매우 간단했는데, 시스템 시간을 들여 임의의 숫자를 추가하거나 uniqid() 메소드를 사용하는 것이었다. 위의 방법을 신중하게 고려하시기 바랍니다. 고객이 소량 구매 시 중복 주문 가능성은 없습니다. 단, 구매 성수기에 발생하는 주문 번호의 중복이 발생할 가능성은 매우 높습니다.

첫 번째 유형

return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

두 번째 유형

return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);

세 번째 유형

//生成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);

네 번째 유형:

인터넷에서 검색해 봤는데 이 동창의 아이디어가 꽤 좋은 것 같아요, 레드타모, 구체적으로 가서 구경해 보세요. 간략한 개요를 제공합니다. 이 방법은 영문자, 연도, 월, 일, Unix 타임스탬프, 마이크로초 및 난수를 사용합니다. 중복 가능성이 크게 줄어들어 여전히 매우 좋습니다. 문자의 사용은 매우 대표적인데, 한 문자는 1년에 해당하며, 그 이상도 그 이하도 아닌 총 16자리입니다. 하하.

<?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));
?>

생성효과:

A422694333616096

아쉽게도 이렇게 복잡하게 만들 필요가 없었다며 최종 프로젝트에서는 이 방법을 사용하지 않았네요,--!

위의 네 가지 방법은 모두 이 글에서 공유한 내용이므로 마음에 드셨으면 좋겠습니다.

【추천: PHP 비디오 튜토리얼

위 내용은 PHP에서 고유 일련번호를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.