【问题标题】:PHP Generate Random Number Between 00 - 29 [duplicate]PHP生成00 - 29之间的随机数[重复]
【发布时间】:2012-08-05 15:24:23
【问题描述】:

可能重复:
Formatting a number with leading zeros in PHP

我的值介于 00 - 29 之间,需要使用 PHP 随机选择。 我尝试使用 rand() 函数,但它给了我 0 - 29。而不是 00、01、02、03 ... 等等。

如何从 PHP 中随机获取 00 - 09 而不是 0 - 9?谢谢。

【问题讨论】:

    标签: php


    【解决方案1】:
    $random = sprintf("%02f", rand(0,29));
    

    或者,如 cmets 中所述:

    $random = str_pad(rand(0,29), 2, "0", STR_PAD_LEFT);
    

    【讨论】:

    • 我会用 sprintf 而不是 spintf ;)
    • +1 打败我。 str_pad() 也是一个不错的选择。在这种情况下,技术比 *printf() 少一点。
    • 它给了我:0.00, 1.00, 2.00... 不是 00, 01, 02... 这里有什么遗漏吗?
    • 更新了答案以显示str_pad()(杰森好点)并修复了小数错误
    • 他的sprintf() 格式错误,请参阅更新。 (告诉你这是技术性的:)
    【解决方案2】:

    使用str_pad:

    $random = str_pad(rand(0, 29), 2, '0', STR_PAD_LEFT);
    

    【讨论】:

      【解决方案3】:

      创建一个类似的数组

      $array = array('00','01','02','03'....,'29');
      echo $array[array_rand($array)];
      

      【讨论】:

      • +1 用于提供替代方案。虽然相当 解决方案:)
      • @JasonMcCreary 我同意。这是一个丑陋的解决方案。
      • 是的,它会起作用,但不要那样做:)
      【解决方案4】:

      a) 如果值低于 10,则添加“0”

      b) 使用 number_format 处理输出

      【讨论】:

        【解决方案5】:

        您可以使用 sprintf 来格式化数字。

        $number = rand(0,29);
        $number = sprintf("%02d", $number);
        

        在 PHP 手册中搜索 sprintf

        【讨论】:

          【解决方案6】:

          您也可以使用这种不依赖附加功能的方法:

          $n = rand(0, 29);
          if( $n < 10 ) $n = "0" . $n;
          

          【讨论】:

          • 是的,这项工作。但是当存在本机函数时很愚蠢。为什么要围绕它们编写代码? Be a better PHP developer.
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-21
          • 2013-01-02
          • 1970-01-01
          • 2014-12-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多