最近因為現公司某些原因不得不重新投入找工作的浪潮。在面試過程中也遇到一些比較有趣的面試題。可能當時沒有想到,回來後自己又思考了一下。題目一:已知一個使用者的ID(ID是長整形)根據使用者ID給使用者產生一個唯一的邀請碼(邀請碼範圍([a-z0-9])?程式碼實作!
當時思考的幾個方案都比較簡單:
<?php function createCode($userId) { //方案一: $currentTime = time(); $code = "{$userId}{$currentTime}"; return $code; //方案二: while(true){ //获取一个随机字符串 $code = getRandString(8); //判断该字符串是否存在 if( ! checkExists($code)) return $code; } }
當時想到的幾種方案差不多都是依照這兩種演變而來。兩種方案的缺點:
方案一:字串長度過長,邀請碼一般都是需要在用戶之間進行傳遞。 >
方案二:每次產生隨機字串都需要去資料庫中找出判斷是否已經存在了。最佳的! >程式碼實現:
與前兩種方案相比較新的方案彌補了前兩種方案的缺點,同時保證同一個用戶重複生成邀請碼時不變的優點,當然這種實現方式還需要結合具體的需求來具體區別對待了。
以上就介紹了 使用者邀請碼的產生方法,包括了方面的內容,希望對PHP教學有興趣的朋友有幫助。