Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie unikalnej liczby
Rid
post
Post #1





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


Znalazłem kod w internecie do generowania unikalnych liczb:
  1. <?php
  2. function rand_except($min, $max, $except)
  3. //function returns a random integer between min and max, just like function rand() does.
  4. // Difference to rand is that the random generated number will not use any of the values
  5. // placed in $except. ($except must therefore be an array)
  6. // function returns false if $except holds all values between $min and $max.
  7. {
  8. //first sort array values
  9. sort($except, SORT_NUMERIC);
  10. //calculate average gap between except-values
  11. $except_count = count($except);
  12. $avg_gap = ($max - $min + 1 - $except_count) / ($except_count + 1);
  13. if ($avg_gap <= 0)
  14. return false;
  15. //now add min and max to $except, so all gaps between $except-values can be calculated
  16. array_unshift($except, $min - 1);
  17. array_push($except, $max + 1);
  18. $except_count += 2;
  19. //iterate through all values of except. If gap between 2 values is higher than average gap,
  20. // create random in this gap
  21. for ($i = 1; $i < $except_count; $i++)
  22. if ($except[$i] - $except[$i - 1] - 1 >= $avg_gap)
  23. return mt_rand($except[$i - 1] + 1, $except[$i] - 1);
  24. return false;
  25. }
  26. ?>
,jednakże czy jest on efektywny ,czy nie lepiej byłoby po prostu użyć mt_rand() i po prostu porównać występowanie liczby w bazie???Zdaje sobie także sprawę ,że to obciąży bazę poprzez liczne połączenia.Co będzie bardziej przymulać (IMG:style_emoticons/default/questionmark.gif) ??Druga ,rzecz czy da rady zapisać wygenerowaną liczbę poprzez polecenie ALTER,czy tylko przez INSERT (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


i wszystko jasne

Ten post edytował lukaskolista 21.12.2010, 21:30:32
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 14:08