Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何制作;uniqid“;只给出数字?_Php - Fatal编程技术网

Php 如何制作;uniqid“;只给出数字?

Php 如何制作;uniqid“;只给出数字?,php,Php,我从不同的教程示例中收集了以下代码: <?php $stamp = date("Ymdhis"); $random_id_length = 6; $rndid = crypt(uniqid(rand(),1)); $rndid = strip_tags(stripslashes($rndid)); $rndid = str_replace(".","",$rndid); $rndid = strrev(str_replace("/","",$rndid)); $rndid = su

我从不同的教程示例中收集了以下代码:

<?php

$stamp = date("Ymdhis");
$random_id_length = 6;
$rndid = crypt(uniqid(rand(),1)); 
$rndid = strip_tags(stripslashes($rndid)); 
$rndid = str_replace(".","",$rndid); 
$rndid = strrev(str_replace("/","",$rndid));
$rndid = substr($rndid,0,$random_id_length); 
$orderid = "$stamp-$rndid";
$orderid = str_replace(".", "", "$orderid");
echo($orderid);

?>

小提琴:

我想用这个来创建一个数字;当前时间,后跟一个6位随机数

例如:
20130710045730-954762

然而,目前随机数字还包括字母

例如:
20130710045730-Z3sVN2

如何编辑代码以仅包含数字?非常感谢您的帮助。

uniqid()
将已返回数字。但以十六进制表示。通常,您可以将它们转换为小数:

echo hexdec(uniqid());
该值只能在64位系统上观察到,因为它非常大,并且超出了32位有符号整数(如php的整数)的限制。这就是重点
uniqid()
使用如此大的数字和其他技术来确保高等级的统一性如果仅使用6位数字,则无法再授予此权限。值冲突的风险很高


我建议使用数据库中的自动增量值或类似值来生成应用程序范围的唯一性。

使用此代码。我认为这会有所帮助

兰特(1000099999)


输入您想要的两位数字如果是随机字符串,请使用以下方法:

$stamp = date("Ymdhis");
$random_id_length = 6;
$rndid = generateRandomString( $random_id_length );

$orderid = $stamp ."-". $rndid;
echo($orderid);

function generateRandomString($length = 10) {
  $characters = '0123456789';
  $randomString = '';
  for ($i = 0; $i < $length; $i++) {
    $randomString .= $characters[rand(0, strlen($characters) - 1)];
  }
  return $randomString;
}

// Output example: 20130710055714-462231
$stamp=日期(“Ymdhis”);
$random_id_length=6;
$rndid=generateRandomString($random\u id\u length);
$orderid=$stamp.“-”$rndid;
echo($orderid);
函数生成器域字符串($length=10){
$characters='0123456789';
$randomString='';
对于($i=0;$i<$length;$i++){
$randomString.=$characters[rand(0,strlen($characters)-1)];
}
返回$randomString;
}
//输出示例:20130710055714-462231
例如:

Fn修改自

使用以下内容:

str_pad(rand(0,'9'.round(microtime(true))),11, "0", STR_PAD_LEFT); 

只需将字母映射到数字?你可以使用
str_-pad(兰德(099999),6,“0”,str_-pad_-LEFT)
在同一秒钟内,你有百万分之一的几率发生帖子冲突。我认为两者都是一样的@ceejayoz说,至少要快得多,并且使用了已知的随机性特征。应该使用它而不是
rand()
。谢谢!那是佩雷夫特:-)没问题!如果您发现答案正确,请为将来的用户标记正确,谢谢!请进一步解释为什么这会起作用,以及为什么OP没有把它做好。请访问此链接了解更多详细信息[。而round(microtime(true))总是调用microtime。。