在PHP中生成非常唯一的数字-CodeIgniter


Generate very Uniquer number in PHP - CodeIgniter

我正在开发一个非常大的应用程序,我想创建一个非常独特的随机数,它永远不会与以前的记录匹配。这是我的代码

function random_number($maxlength = 17) {
    $chary = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
                    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
    $return_str = "";
    for ( $x=0; $x<=$maxlength; $x++ ) {
        $return_str .= $chary[rand(0, count($chary))];
    }
    return $return_str;
}

现在它工作得很好,但有时它会给我错误

Notice: Undefined offset: 62 in test.php on line 8

其中第8行为

$return_str .= $chary[rand(0, count($chary))];

有人能帮我修一下吗?

其次,CI中是否存在随机数的函数?

根据手册,

int rand(int$min,int$max)

如果在没有可选min的情况下调用,则max参数rand()将返回一个介于0和getrandmax()之间的伪随机整数。例如,如果您想要一个介于5和15之间的随机数(包括5和15),请使用rand(5,15)。

因此,您必须更改rand()函数中的范围参数,从rand(0, count($chary))更改为rand(0, count($chary)-1)

function random_number($maxlength = 17) {
    $chary = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
                    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
    $return_str = "";
    for ( $x=0; $x<=$maxlength; $x++ ) {
        $return_str .= $chary[rand(0, count($chary)-1)];
    }
    return $return_str;
}

试试uniqid,它是标准的php函数,你不需要发明自己的自行车。它有缺点,但它的另一个主题。

我正在开发一个非常大的应用程序,我想创建一个非常独特的随机数,它永远不会匹配以前的记录

然后不要使用以下任何功能:

  • rand()
  • mt_rand()
  • lcg_value()
  • str_shuffle()
  • uniqid()

他们都很虚弱。相反,您需要random_int()。否则,被接受的答案是……可以接受的。