길이 변경 지원
/**
* 고유 주문 번호 생성
*
*/function build_order_no(){<code class="prettyprint linenums lang-php">function build_order_no(){<br>
return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);<br>
}
return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}댓글:
uniqid를 사용하여 현재 마이크로초 수를 기준으로 생성된 고유하고 고유한 문자열을 가져오고(단 처음 7자리는 오랫동안 변경되는 것 같으므로 고려하지 않고 삭제해도 됩니다) 8~13번째 숫자를 가져옵니다. 그런데 이 문자열에 영문자가 있는데 어떻게 해야 할까요?
ord를 사용하여 ASCII 코드를 얻으면 다음 단계가 있습니다. str_split을 사용하여 문자열을 배열로 분할하고 array_map을 사용하여 (더 빠르게) 작동합니다.
그런 다음 반환되는 것은 여전히 implode를 사용하여 문자열로 변환되는 배열 KO입니다. 그러나 문자 길이는 가변적입니다. 처음 고정된 몇 자리 숫자를 취하고 앞에 생성된 주문 번호를 추가합니다. 이 방법은 전 세계에서 사용되지 않습니다.
물론 서버 시간을 앞으로 조정하지 않는 한 조정하는 것을 두려워하지 마십시오. 로컬에 있더라도 네트워크 데이터 전송에도 시간이 걸릴 것이라고 생각합니다.