У меня есть пример функции для генерации уникальных идентификаторов:
function generate_uuid($needed_ids_num = 1, int $random_bytes_length = 6)
{
$ids = [];
while (count($ids) < $needed_ids_num) {
$id = bin2hex(random_bytes($random_bytes_length));
if (!isset($ids[$id])) $ids[$id] = true;
}
$ids = array_keys($ids);
return $ids;
}
У меня есть уникальные идентификаторы в базе данных:
$ids_from_database = array(
'ad5dcc895ddc',
'3d036129b5b4',
'db569298c1ea',
'f919a34b31db'
);
Как я могу сгенерировать уникальный идентификатор, сравнивая уже существующие идентификаторы из базы данных?
Моя функция переписанного варианта - это образец:
function generate_uuid(array $ids_from_database, int $needed_new_ids = 1, int $random_bytes_length = 6)
{
$temp = $ids;
$needed_ids_num = count($ids) + $needed_ids;
while (count($ids) < $needed_ids_num) {
$id = bin2hex(random_bytes($random_bytes_length));
if (!isset($ids[$id])) $ids[$id] = true;
}
$ids = array_keys($ids);
$result = array_diff($ids, $temp);
return [
'new_uuid' => $result,
'ids' => $ids
];
}
Почему моя написанная функция не возвращает массивы результатов в неверном варианте?