Benzersiz oluşturma # Nasıl: PHP

4 Cevap

Ben eşsiz bir dize oluşturmak için PHP () uniqid nasıl kullanılacağına örnekler çok gördüm, ama benzersiz bir sipariş numarası (tamsayılar yok, sadece harf) oluşturmanız gerekir ettik.

I) (uniqid fikri sevdim çünkü ben (Ben doğru işlevini anlama ediyorsam) .... o tarih / zaman kullanır, böylece aynı olan başka bir id oluşturulan olma şansı sıfırdır den ne anlamak

4 Cevap

Bir sayıya onaltılık dize dönüştürmek için hexdec kullanın. http://us.php.net/manual/en/function.hexdec.php

hexdec(uniqid())

mt_rand hile yapmak gerekir.

Bu ilk paramatresi ve ikinci parametrenin arasında rastgele bir sayı üretir. Örneğin, 500 ve 1000 arasında rastgele bir sayı üretmek için, yapacağın:

$number = mt_rand(500,1000);

Eğer bir sipariş numarası olarak kullanıyor iseniz Ama, sadece bir değiştirmemesi sütun kullanmalısınız. Sadece olduğunu ne için orada, ama aynı sayı birden fazla oluşturulan durumunda ne yapardınız? Eğer MySQL kullanarak varsayarak yapabilirsiniz read about autoincrement columns here.

uniqid () ne zaman gerçekten kimlikleri kullanarak konum ne bağlıdır .. sen öyle düşünüyorsun .. ama bir veritabanına bu değeri tıkalı eğer, kimlikleri için bir otomatik artan bir alanı kullanarak daha iyi gidiyoruz için.

Ben şahsen date('U') UNIX EPOCH beri saniye sayısına göre bir dize oluşturmak için kullanabilirsiniz. Bu yeterince rastgele değilse (Eğer iki sipariş aynı tam saniye içinde konuyor olması için gidiyoruz düşünüyorsanız) basitçe başka bir katman eklemek mt_rand(0,9):

$uniqid = date('U') . mt_rand(0,9);

Bu irade, hemen hemen tüm durumlarda, size ikinci dereceden birinci önüne hangi durumda tam olarak aynı saniyede oluşturulan siparişler, sahip durum dışında bir artımlı kimlik vermek.