создание группы номеров aleatorios, что есть unico


Существует uniqid для создания группы unico символов, но эта функция использует буквы и цифры. И googled, но не нашел ничего ты, только цифры. Кто-нибудь знает, каким-то образом это осуществить?

 1
php
Author: ivan veloso, 2014-08-05

3 answers

, Все зависит от того, что вы имеете в виду с "уникальными" и, что он будет делать с этими числами. В начало, uniqid() возвращает значения в hex, который вы можете преобразовать в десятичные:

$uid = hexdec(uniqid());

Другое решение, то будет так:

$digitos = '0123456789';
$tamanho = 16; // por exemplo...
$uid = '';
for ($i = 0; $i < $tamanho; $i++) {
    $uid .= $digitos[rand(0, strlen($digitos) - 1)];
}

(Решение, основанное в этом коде)

Результатом будет строка с цифрой в произвольном 16 цифр), например.

 4
Author: Blau, 2014-08-05 21:19:20

Вы можете использовать microtime

Microtime - Возвращает метку времени Unix с микросекундах


В зависимости от цели, может быть, простой, жизнеспособная альтернатива с низким риском столкновения.

echo microtime();
0.97959400 1407273578

Вы можете удалить . и пространство

 1
Author: Papa Charlie, 2014-08-05 21:28:21

Просто пойти в том числе чисел в массив, проверяя раньше, если уже не существует в нем.

$sorteados = array();

for($i = 0; $i <= 1000; ++$i) {
    do {
       $nr = rand(1000,10000);
    } while (in_array($nr,$sorteados));
    $sorteados[] = $nr;
}

print_r($sorteados);
 1
Author: Jader A. Wagner, 2014-08-06 01:34:22