Гарантирует ли данный код уникальность элемента по отношению к массиву?

Создаю ключи с помощью $unique = uniqid()
Однако, согласно тестам, это не гарантирует 100% уникальность.

$arr - многомерный массив, выгруженный из базы данных

Необходимо гарантированно создавать уникальный ключ по отношению ко всем другим ключам.

Гарантирует ли уникальность такой перебор и сравнение с каждым существующим ключем?

uniqid() отсчитывает только вперед, поэтому количество прогонов = количество элементов в массиве.

Это самая грубая ситуация, когда вообще все элементы совпали =)

$arr = R::getAll('SELECT `title` FROM `itemscategory` WHERE `id_user` = 100'); 

$unique = "5e9dfcc49a460"; // существующий key 

  for ($i = 0; $i < count($arr); $i++) {
    if (!in_array(['title' => $unique], $arr)) {
      echo $unique;
      echo "  <- "; 
      echo " Уникальное";
      break;
    } else {
      echo $unique;
      echo "  <- ";
      echo " Есть дубль";
      echo " \n ";
      $unique = uniqid();
    }
}

   // Итого выводится на странице:
   // 5e9dfcc49a460  <-  Есть дубль 
   // 5e9e22f523312  <-  Уникальное



var_dump($arr)

array(4) {
  [0]=>
  array(1) {
    ["title"]=>
    string(13) "5e9dfcc295981"
  }
  [1]=>
  array(1) {
    ["title"]=>
    string(13) "5e9dfcc49a460"
  }
  [2]=>
  array(1) {
    ["title"]=>
    string(13) "5e9dfcc5b1ff8"
  }
  [3]=>
  array(1) {
    ["title"]=>
    string(13) "5e9dfcc637f75"
  }
}

Ответы (1 шт):

Автор решения: Sergey Dolmatov

Если вопрос в этом:

Гарантирует ли уникальность такой перебор и сравнение с каждым существующим ключем?

То да, уникальность такой метод гарантирует, однако, не до бесконечного числа итераций.

→ Ссылка