我如何根据索引大小rand字符串

时间:2017-11-23 23:14:24

标签: php string random indexing

我真的不知道如何去做,但对于我来说,每个索引的每个rand_string都有很好的成就。

我的代码:

function rand_string($length) {
  $str="";
  $chars = "abcdefghijklmanopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $size = strlen($chars);
  for($i = 0; $i < $length; $i++) {
    $str .= $chars[rand(0, $size-1)];
  }
  return $str;
}

$pcode = rand_string(4);
for ($b = 0; $b < 3; $b++) {
  echo $pcode[$b];
}

我期待输出中出现类似9cwm cZnu c9e4的内容。我能用PHP实现吗?

目前,通过我的代码,我在每个索引中都会收到来自rand_string的字符串,例如9cw

3 个答案:

答案 0 :(得分:1)

您的代码有效,您只需在第二个循环中调用rand_string即可获得类似 9cwm cZnu c9e4 (您在问题中描述的内容)。

这是一个有效的例子:

function rand_string($length) {
    $str="";
    $chars = "abcdefghijklmanopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $size = strlen($chars);
    for($i = 0;$i < $length;$i++) {
        $str .= $chars[rand(0,$size-1)];
    }
    return $str;
}

// call rand_string inside for loop
for ($b = 0; $b<3; $b++) {
    echo rand_string(4).' ';
}

Try it online

答案 1 :(得分:0)

字符串的生成实际上适用于您的代码。您没有正确调用/打印该功能。只需调用该函数三次并打印所有结果(中间有空格)。

,而不是打印,你可以将它们连接在一起,然后删除最后一个空格。

<?php
function rand_string($length) {
  $str="";
  $chars = "abcdefghijklmanopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $size = strlen($chars);
  for($i = 0;$i < $length;$i++) {
   $str .= $chars[rand(0,$size-1)];
  }
  return $str;
 }

  for ($b = 0; $b<3; $b++)
   {
    echo rand_string(4)." ";
    }

答案 2 :(得分:-1)

如果您不介意使用完全不同的方法,限制为32个字符:

return substr(md5(mt_rand().time()), 0, $length);

这不是超级随机,但你得到了图片......

感谢CM和user2693053引起我的注意(更新后的答案)

  • 使用mt_rand()代替rand()
  • md5()长度为32 ......