在php中生成随机数

时间:2016-12-24 13:13:01

标签: php mysql random undefined

我想生成一个5位数的随机数,该数字不在表格中并适用于注册。我有下面的代码..它生成一个随机数,但它显示

  

“注意:未定义的变量:F:\ wamp \ www \ hello \ hello.php中的id   第8行“

请帮帮我

<?php


error_reporting(E_ALL ^ E_DEPRECATED);
// function to generate random ID number
function createID() {
 for ($i = 1; $i <= 5; $i++) {
  $id .= rand(0,9);
 }
 return $id;
}

// MySQL connect info
mysql_connect("localhost", "root", "");
mysql_select_db("college");
$query = mysql_query("SELECT id FROM college");

// puts all known ID numbers into $ids array
while ($result = mysql_fetch_array($query)) {
 $ids[] = $result["id"];
}

// generates random ID number
$id = createID();

// while the new ID number is found in the $ids array, generate a new $id number
while (in_array($id,$ids)) {
 $id = createID();
}

// output ID number
echo $id;

?>

3 个答案:

答案 0 :(得分:2)

问题是你需要在附加id之前初始化id。

例如,这个函数可以解决这个问题:

function createID() {
    $id = '';
    for ($i = 1; $i <= 5; $i++) {
         $id .= rand(0,9);
    }
    return $id;
}

答案 1 :(得分:2)

在定义之前,您将附加到$id。只需用空字符串初始化它,你就可以了:

function createID() {
    $id = '';
    for ($i = 1; $i <= 5; $i++) {
        $id .= rand(0,9);
    }
    return $id;
}

但是,坦率地说,我认为你在这里重新发明轮子。你可以随机化一个0到99999之间的数字,并填零任何缺失的数字:

function createID() {
    return std_pad(random(0, 99999), 5, '0', STD_PAD_LEFT);
}

答案 2 :(得分:0)

您需要在使用之前定义变量。

<?php
function createID() {
    $id = ''; // define $id variable
    for ($i = 1; $i <= 5; $i++) {
        $id .= rand(0,9);
    }
    return $id;
}