【问题标题】:How do i rand string according to index size我如何根据索引大小对字符串进行排序
【发布时间】:2018-05-07 22:40:38
【问题描述】:

我真的不知道该怎么做,但是对于每个索引来说,每个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 个随机字符串......所以你应该在第二个循环中回显 rand_string(4) 而不是你现在正在做的事情。
  • 你在$chars中有两次a
  • 更新了格式并清理了一些语法。

标签: php string random indexing


【解决方案1】:

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

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

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

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

  • 使用mt_rand() 而不是rand()
  • md5() 长度为 32...

【讨论】:

  • 我无法检测到您的方法,请编辑更多代码或想法,谢谢
  • 这个想法是你使用md5(rand().time()通过散列一个随机数和当前时间的组合来生成一个合理的随机字符串。之后substr() 用于返回长度为$length 的字符串的一部分。请记住,md5() 返回一个由 32 个字符组成的字符串,因此如果您可以使用 $length &gt; 32,请解决此问题。
  • rand() 不推荐使用,它是 PHP 7 中 mt_rand() 的别名。出于向后兼容性的原因,您应该改用 mt_rand()。希望我有所帮助! -CM
  • 谢谢你们的cmets!我会更新我的答案并感谢你;)
【解决方案2】:

您的代码有效,您只需在第二个循环中调用 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

【讨论】:

  • 在更多提示中我可以在一行中取回这些字符串吗?示例:string(12) "9cwmcZnuc9e4"
  • 是的,当然,只做echo rand_string(4);,不要在最后一个循环中连接''
  • 将这个字符串重新放在一行中是硬大小似乎没有按预期进行检查
  • 你想变成这样吗:Demo ?
  • 是的,但在一个 var_dump 字符串行示例中:function rand_string($length) { $str=""; $chars = "abcdefghijklmanopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $size = strlen($chars); for($i = 0;$i
【解决方案3】:

字符串的生成实际上在您的代码中起作用。您没有正确调用/打印该功能。只需调用该函数 3 次并打印所有结果(中间有空格)。您可以将其连接成一个字符串并删除最后一个空格,而不是打印。

<?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)." ";
    }

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2019-07-10
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多