Datenbanktabellen haben normalerweise einen automatisch inkrementierenden Primärschlüssel mit dem Feldtyp int und der benannten ID.
Vorteile: Die Verwendung des int-Typs kann automatisch inkrementiert werden und spart Speicherplatz als der Zeichentyp.
Nachteile: ID ist ein numerischer Typ. Wenn Sie die einer ID entsprechenden Daten abfragen möchten, ist es schwierig, anhand der ID zu bestimmen, auf welcher Datentabelle sie basiert.
Daher sollten wir beim Speichern int verwenden und beim Anzeigen etwas Verarbeitung an der ID vornehmen, damit leicht erkennbar ist, zu welcher Tabelle die ID gehört.
Die folgende Klasse wurde geschrieben, um Präfixe zu IDs hinzuzufügen und vorangestellte IDs wiederherzustellen.
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 class="brush:php;toolbar:false">';// 已加前缀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 '';?>
Ausgabe:
1.id加前缀 U1001 O2016102743765214 M1092832.根据已加前缀id获取前缀类型 user order message3.还原为原始id10012016102743765214109283
Benutzerdefinierte Präfixkonstante, die entsprechend Ihren Anforderungen erstellt werden kann.
In diesem Artikel wird erläutert, wie Sie mit PHP die ID-Präfixformatierung durchführen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
So print_r über PHP Methode zum Wiederherstellen der verarbeiteten Daten im ursprünglichen Array
Beurteilen Sie die Verbindung über PDO in PHP Verfügbare Methoden
Verwenden Sie PHP, um festzustellen, ob die Seite oder das Bild gzip-komprimiert wurde
Das obige ist der detaillierte Inhalt vonSo führen Sie eine ID-Präfix-Formatierungsklasse über PHP durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!