PHP creates a unique numbering class based on the self-increment ID

Source: Internet
Author: User


In the development process, our data table generally uses the self-increment number as the ID primary key, but the ID is the numeral type, is not easy to understand. After we have converted the IDs to numbers in a certain format, it is easy to know what is represented by the number.

For example, the order table id=20160111197681234, only look at the ID we do not know that this ID is the ID of the order table, and to the number O-20160111197681234, it is easy to see is the Order table records, You can then search the order form based on the ID.

Rules for numbering creation

1. The only
Generate with a self-increment ID to ensure uniqueness

2. As short as possible
You can use the number to find the letter of the way processing, create a shorter number

Algorithm principle

1. Add a custom prefix to identify

2. The format uses the prefix + the letter + the number composition, the number only retains n bits, exceeds the use number to seek the remainder the way uses the letter correspondence

For example:
Id=1
Prefix =f
Number reserved 3-bit
The number created is:f-a-001

The code is as follows:

IDCode.class.php

<?php/** * PHP creates unique numbering class based on self-increment ID * date:2016-11-27 * author:fdipzone * ver:1.0 * * Func * Public Create number */C Lass idcode{//class start/** * Create number * @param int $id self-increment ID * @param int $num _length digit Maximum Number * @param string $prefix prefix * @return String */public static function Create ($id, $num _length, $pref        IX) {//cardinality $base = POW ($num _length);        Generates a letter part $pision = (int) ($id/$base);        $word = ";      while ($pision) {$tmp = Fmod ($pision, 26);//Use only 26 uppercase letters $TMP = CHR ($tmp + 65);            Convert to letter $word. = $tmp;        $pision = Floor ($pision/26);        } if ($word = = ") {$word = Chr (65);        }//Generate number part $mod = $id% $base;                $digital = Str_pad ($mod, $num _length, 0, Str_pad_left);        $code = sprintf ('%s-%s-%s ', $prefix, $word, $digital);    return $code; }}//Class end?>

demo.php

<?phprequire ' IDCode.class.php '; $test _ids = Array (1,9,10,99,100,999,1000,1009,2099,3999,9999,14999,99999); foreach ($test _ids as $test _id) {    echo $test _id. ' = '. Idcode::create ($test _id, 3, ' F '). ' <br> ';}? >

Output:

1 = f-a-0019 = f-a-00910 = f-a-01099 = f-a-099100 = f-a-100999 = f-a-9991000 = f-b-0001009 = f-b-0092099 = F-C-0993999 = F -d-9999999 = f-j-99914999 = f-o-99999999 = f-vd-999



SOURCE Download Address: Click to view

In the development process, our data table generally uses the self-increment number as the ID primary key, but the ID is the numeral type, is not easy to understand. After we have converted the IDs to numbers in a certain format, it is easy to know what is represented by the number.

For example, the order table id=20160111197681234, only look at the ID we do not know that this ID is the ID of the order table, and to the number O-20160111197681234, it is easy to see is the Order table records, You can then search the order form based on the ID.

Rules for numbering creation

1. The only
Generate with a self-increment ID to ensure uniqueness

2. As short as possible
You can use the number to find the letter of the way processing, create a shorter number

Algorithm principle

1. Add a custom prefix to identify

2. The format uses the prefix + the letter + the number composition, the number only retains n bits, exceeds the use number to seek the remainder the way uses the letter correspondence

For example:
Id=1
Prefix =f
Number reserved 3-bit
The number created is:f-a-001

The code is as follows:

IDCode.class.php

<?php/** * PHP creates unique numbering class based on self-increment ID * date:2016-11-27 * author:fdipzone * ver:1.0 * * Func * Public Create number */C Lass idcode{//class start/** * Create number * @param int $id self-increment ID * @param int $num _length digit Maximum Number * @param string $prefix prefix * @return String */public static function Create ($id, $num _length, $pref        IX) {//cardinality $base = POW ($num _length);        Generates a letter part $pision = (int) ($id/$base);        $word = ";      while ($pision) {$tmp = Fmod ($pision, 26);//Use only 26 uppercase letters $TMP = CHR ($tmp + 65);            Convert to letter $word. = $tmp;        $pision = Floor ($pision/26);        } if ($word = = ") {$word = Chr (65);        }//Generate number part $mod = $id% $base;                $digital = Str_pad ($mod, $num _length, 0, Str_pad_left);        $code = sprintf ('%s-%s-%s ', $prefix, $word, $digital);    return $code; }}//Class end?>

demo.php

<?phprequire ' IDCode.class.php '; $test _ids = Array (1,9,10,99,100,999,1000,1009,2099,3999,9999,14999,99999); foreach ($test _ids as $test _id) {    echo $test _id. ' = '. Idcode::create ($test _id, 3, ' F '). ' <br> ';}? >

Output:

1 = f-a-0019 = f-a-00910 = f-a-01099 = f-a-099100 = f-a-100999 = f-a-9991000 = f-b-0001009 = f-b-0092099 = F-C-0993999 = F -d-9999999 = f-j-99914999 = f-o-99999999 = f-vd-999


The above is PHP based on the self-increment ID to create a unique numbering class content, more relevant content please pay attention to topic.alibabacloud.com (www.php.cn)!

  • Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    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.