【问题标题】:Generate unique id In PHP在 PHP 中生成唯一 ID
【发布时间】:2013-11-08 06:38:25
【问题描述】:

我想在我的项目中创建唯一 ID。我用过这个

$key = md5(microtime().rand());

但我想创建这样的唯一 ID:HPSEMP001 等等 HPSEMP002,HPSEMP003

我无法做到这一点,请帮助我,我是 PHP 新手

【问题讨论】:

  • 我希望每次调用 001,002 时它都会返回给我
  • HPSEMP999 之后会发生什么?
  • 在数据库或文件中跟踪生成的 id。
  • 另外,如果您想要一个真正唯一的 id,请使用 uniqid()
  • @AlmaDo 在 HPSEMP999 这个 HPSEMP1000 之后

标签: php cakephp


【解决方案1】:

您可以创建递归函数来生成随机数,如果数字在数据库中可用,也会在数据库中检查。

在我的示例中,我使用以下代码为客户创建了不同的随机部门代码,

/**
 * Generate Random number and check if it is exist or not
 */
public function checkAndGenerateRandomNumber($customerId) {
    $number = sprintf("%04s", rand(1,9999));
    $response = ClassRegistry::init('Department')->find('first', array('conditions' => array('Department.customer_id' => $customerId, 'Department.code' => $number)));  
    if(isset($response) && !empty($response)) {
        $this->checkAndGenerateRandomNumber($customerId);
    } else {
        return $number;
    }
}

【讨论】:

    【解决方案2】:

    我是一个初学者,但我已经尝试过了,它很有效:

    $num = 0;
    global $num;
    
    function new_id() {
        global $num;
        return 'HPSEMP' . sprintf("%03d", $num++); 
    }
    

    函数调用示例:

    for ($i = 0; $i < 1500; $i++) {
        $new_id = new_id();
        echo "<br>$new_id";
    }
    

    输出:

    HPSEMP000
    HPSEMP001
    HPSEMP002
    HPSEMP003
    .
    .
    .
    HPSEMP997
    HPSEMP998
    HPSEMP999
    HPSEMP1000
    

    或者,如果您想将代码保存在数据库或文件中,我没有尝试过,但应该可以:

    function new_id($num) {
            $num++;
            // * Code to save new number value in file or database
            return 'HPSEMP' . sprintf("%03d", $num++); 
        }
    
    // * Code to retrieve id number from file or database and store it to $num
    // * $num = previously stored id number
    $new_id = new_id($num);
    

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多