如何通過php 進行ID首碼格式化類

來源:互聯網
上載者:User
資料庫表通常都會有一個欄位類型為int,命名為id的自增主鍵。

優點:使用int類型可自增,且比字元類型節省儲存空間。
缺點:id是數值型,當要查詢一個id對應的資料時,很難根據id判斷是哪一個資料表。

因此我們在儲存時,應使用int,而在顯示時對id進行一些處理,使很容易分辨這個id屬於哪一個表。

編寫了下面這個類,實現對id增加首碼及對已加首碼的id還原。

Prefix.class.php

<?php/** * ID首碼格式化類 * Date:    2016-10-27 * Author:  fdipzone * Ver:     1.0 * * Func * public getPrefixId    產生已加首碼的id * public getId          還原為id * public getPrefixType  根據已加首碼id擷取首碼類型 */class Prefix{ // class start    // 定義首碼常量    const USER_TYPE = 'user';       // 使用者    const ORDER_TYPE = 'order';     // 訂單    const MESSAGE_TYPE = 'message'; // 訊息    // 首碼設定    private static $prefix = array(        self::USER_TYPE => 'U',        self::ORDER_TYPE => 'O',        self::MESSAGE_TYPE => 'M'    );    /**     * 建立帶首碼的id     * @param  Int     $id          id     * @param  Int     $prefix_type 類型     * @return String     */    public static function getPrefixId($id, $prefix_type=''){        // 有自訂首碼類型        if(isset(self::$prefix[$prefix_type])){            return self::$prefix[$prefix_type].$id;        }        // 沒有自訂首碼類型        return $id;    }    /**     * 還原為id     * @param  String $prefix_id 已加首碼id      * @return Int     */    public static function getId($prefix_id){        preg_match('/\d+/', $prefix_id, $arr);        if(isset($arr[0])){            return $arr[0];        }        return 0;    }    /**     * 根據已加首碼id擷取首碼類型     * @param  String $prefix_id 已加首碼id      * @return Int     */    public static function getPrefixType($prefix_id){        // 擷取id首碼        preg_match('/[A-Za-z]+/', $prefix_id, $arr);        if(isset($arr[0])){            $prefix = $arr[0];            // 擷取首碼            $prefixs = array_flip(self::$prefix);            if(isset($prefixs[$prefix])){                return $prefixs[$prefix];            }        }        return '';    }} // class end?>

demo.php

<?phprequire 'Prefix.class.php';// 原始id$user_id = 1001;$order_id = 2016102743765214;$message_id = 109283;echo '<pre>';// 已加首碼idecho '1.id加首碼'.PHP_EOL;$prefix_user_id = Prefix::getPrefixId($user_id, Prefix::USER_TYPE);$prefix_order_id = Prefix::getPrefixId($order_id, Prefix::ORDER_TYPE);$prefix_message_id = Prefix::getPRefixId($message_id, Prefix::MESSAGE_TYPE);echo $prefix_user_id.PHP_EOL;echo $prefix_order_id.PHP_EOL;echo $prefix_message_id.PHP_EOL.PHP_EOL;// 首碼類型echo '2.根據已加首碼id擷取首碼類型'.PHP_EOL;echo Prefix::getPrefixType($prefix_user_id).PHP_EOL;echo Prefix::getPrefixType($prefix_order_id).PHP_EOL;echo Prefix::getPrefixType($prefix_message_id).PHP_EOL.PHP_EOL;// 還原為原始idecho '3.還原為原始id'.PHP_EOL;echo Prefix::getId($prefix_user_id).PHP_EOL;echo Prefix::getId($prefix_order_id).PHP_EOL;echo Prefix::getId($prefix_message_id).PHP_EOL.PHP_EOL;echo '</pre>';?>

輸出:

1.id加首碼U1001O2016102743765214M1092832.根據已加首碼id擷取首碼類型userordermessage3.還原為原始id10012016102743765214109283

自訂的首碼常量,可以根據需求自行建立。

本文講解了如何通過php 進行ID首碼格式化類,更多相關內容請關注php中文網。

相關推薦:

如何通過php 將print_r處理後的資料還原為原始數組的方法

通過php中的PDO判斷串連是否可用的方法

通過php 判斷頁面或圖片是否經過gzip壓縮

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.