>  기사  >  백엔드 개발  >  PHP에서 반복되지 않는 고유한 숫자를 생성하는 방법 요약

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

*文
*文원래의
2017-12-26 13:56:597911검색

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 난수 C 확장 난수

PHP 난수에 대한 심층적인 이해를 바탕으로_PHP 튜토리얼

PHP가 생성하는 올바른 자세는 무엇인가요? UUID?

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

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