多数大学生出来选择的工作和专业无关
首页 > 专业知识

php生成唯一数字id的方法汇总_PHP

时间:2019-01-09 20:13:04 [来源]:郑州PHP培训学校

   php生成唯一数字id的方法汇总_PHP

  关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?
  当然不是,其实有两种方法可以解决。
  1. 如果你只用php而不用数据库的话,那时间戳+随机数是最好的方法,且不重复;2. 如果需要使用数据库,即你还需要给这个id关联一些其他的数据。那就给MySQL数据库中的表的id一个AUTO_INCREMENT(自增)属性,每次插入一条数据时,id自动+1,然后使用mysql_insert_id()或LAST_INSERT_ID()返回这个自增后的id。
  当然,这个问题已经有现成的解决方法了,使用php uuid扩展就能完美解决这个问题,这个扩展能生成唯一的完全数字签名。。
  如果你不使用composer请参考https://github.com/lootils/uuid,如果你的项目是基于composer搭建的,那么请参考https://github.com/ramsey/uuid具体的源码我就不搬运了,小伙伴们自己取下来就可以直接使用了PHP生成唯一标识符代码示例:
  < ?
  //生成唯一标识符
  //sha1()函数, "安全散列算法(SHA1)"
  function create_unique() {
  $data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']
  .time() . rand();
  return sha1($data);
  //return md5(time().$data);
  //return $data;
  }
  ?>
  PHP生成唯一标识符函数描述及例子
  < ?
  $newhash = create_unique();
  echo $newhash;
  ?>
  PHP中使用array函数新建一个数组_PHP
  PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。
  array
  (PHP 4, PHP 5)
  array — 新建一个数组
  说明
  代码如下:
  array array ([ mixed $... ] )
  返回根据参数建立的数组。参数可以用 => 运算符给出索引。关于数组是什么的信息请阅读数组一节。
  Note:
  array() 是一个语言结构,用于字面上表示数组,不是常规的函数。
  语法“index => values”,用逗号分开,定义了索引和值。索引可以是字符串或数字。如果省略了索引,会自动产生从 0 开始的整数索引。如果索引是整数,则下一个产生的索引将是目前最大的整数索引 + 1。注意如果定义了两个完全一样的索引,则后面一个会覆盖前一个。
  在最后一个定义的数组项目之后加一个逗号虽然不常见,却是合法的语法。
  下面的例子演示了怎样建立一个二维数组,怎样给相应的数组指定键名,以及怎样在普通数组中略过和继续数字索引。
  Example #1 array() 例子
  <?php
  $fruits = array (
  "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"),"numbers" => array(1, 2, 3, 4, 5, 6),
  "holes"  => array("first", 5 => "second", "third"));
  ?>
  Example #2 array() 的自动索引
  <?php
  $array = array(1, 1, 1, 1, 1, 8 => 1, 4 => 1, 19, 3 => 13);print_r($array);
  ?>
  以上例程会输出:
  Array
  (
  [0] => 1
  [1] => 1
  [2] => 1
  [3] => 13
  [4] => 1
  [8] => 1
  [9] => 19
  )
  注意索引 3 被定义了两次,保留了最后的值 13。索引 4 在 索引 8 之后定义,下一个自动生成的索引(值为 19 那个)为 9,因为最大的索引是 8。
  本例建立了从 1 开始的数组。
  Example #3 从 1 开始索引的 array()
  <?php
  $firstquarter = array(1 => 'January', 'February', 'March');print_r($firstquarter);
  ?>
  以上例程会输出:
  Array
  (
  [1] => January
  [2] => February
  [3] => March
  )
  在 Perl 中,可以访问在双引号内的数组的值。但在 PHP 中需要将数组用花括号括起来。
 

上一篇:PHP类搜索定位目录树的具体实现方式解析

下一篇:如何利用php数组对百万数据进行排重