生成具有特定前缀的随机数我做错了什么

时间:2018-01-05 13:13:17

标签: php

我一直在和uniqid一起玩,但它开始给我13个长串。

我正在寻找一个100的前缀,之后最多有6个随机数

感谢任何帮助赞赏

function generate_order(){

    $order_ref="";
    $a=uniqid(prefix,100);  
    $num4=array('0','1','2','3','4','5','6','7','8','9');
    $num=rand(0,9);
    $num2=rand(0,9);
    $num3=rand(0,9);
    shuffle($num4);
    //now the final
    $order_ref = $num4[0].$num4[3].$num.$num4[1].$num2.$num4[2].$num3.$num4[4];
}

3 个答案:

答案 0 :(得分:1)

我已经为上面的代码重新制作了一些代码:

  1. 为什么在数组范围为1到9的数组上执行shuffle()?这与执行rand(1,9)
  2. 相同
  3. 考虑到第一点,使用rand(10000000, 99999999)会得到相同的结果。
  4. $a=uniqid(prefix,100)未在您的功能中使用
  5. uniqid()中的前缀应为字符串。
  6. 您的功能并非return。您应该使用return $order_ref;
  7. 希望这些能帮助你修复你的功能。

    回应您的评论

    $order_ref = '100'.rand(100000, 999999);
    

    其他建议

    如果您打算将此作为订单参考,我怀疑,我不建议只使用随机数。这将使你很有可能重复数字。

    相反,我建议使用$order_ref = '100'.date('u').rand(10, 99);。这将根据当前时间为您提供一个随机数,从而防止(或至少最小化)重复订单参考的可能性。

答案 1 :(得分:0)

如果您在结果前需要100,请使用前缀输入所需的字符串

使用uniqid(100)可以获得所需的结果。

答案 2 :(得分:0)

我将如何做 1.定义你的前缀 2.生成随机数 3.康卡特

$prefix="some_prefix";
$rand_no = rand(1,100);
$rand_no_with_prefix = $prefix.$rand_no;

Google可以提供准确的语法和功能。 这只是我要遵循的基本逻辑。 希望能帮助到你。 如果需要,步骤4也将是解析(如果连续的随机数需要是整数)