Вместо генерации уникального ключа, кроме идентификатора, вы можете также создать функцию, которая хэширует или кодирует идентификатор в строку. Например, вы можете преобразовать целое число в шестнадцатеричное представление с 8 символами. Вы можете сделать это немного сложнее, если хотите, но все же довольно легко написать функцию, которая использует фиксированную формулу для преобразования числа до 8 букв и наоборот. Таким образом, вам не нужно хранить эти дополнительные данные, и вам не нужно беспокоиться о уникальности значения.
<?php
function translate($key, $back)
{
$key = str_pad($key, 8, '0', STR_PAD_LEFT);
$a = array('1','2','3','4','5','6','7','8','9','0');
$b = array('a','b','c','d','e','f','g','h','i','j');
if ($back) {$c = $b; $b = $a; $a = $c;}
return str_replace($a, $b, $key);
}
function encode_id($int)
{
return translate($int, false);
}
function decode_id($key)
{
return (int)translate($key, true);
}
$key = encode_id(40000);
$int = decode_id($key);
echo $key;
echo '<br>';
echo $int;
Спасибо за код, но я думаю, что в основном о производительности вы мне отвечаете. – Zaki