【问题标题】:PHP Select a Random String from Two StringsPHP 从两个字符串中选择一个随机字符串
【发布时间】:2012-02-03 06:11:40
【问题描述】:
$apple="";
$banana="";
$apple="Red";
$banana="Blue";

$random(rand($apple, $banana);
echo $random;

如何通过 PHP 选择随机字符串(快速)?

【问题讨论】:

  • 顺便说一句,您不需要在使用前声明变量 - 您只需创建 $apple="red";
  • 谢谢!糟糕的经历带来的坏习惯——我现在就这样做是为了更加安全!

标签: php random


【解决方案1】:

怎么样:

$random = rand(0, 1) ? 'Red' : 'Blue';

【讨论】:

    【解决方案2】:

    您的代码有问题

    PHP rand() 函数将两个数字作为输入以形成从中选择随机数的范围。你不能喂它字符串。

    请参阅PHP manual page for rand()。

    解决方案

    你可以使用array_rand():

    $strings = array(
        'Red',
        'Blue',
    );
    $key = array_rand($strings);
    echo $strings[$key];
    

    另一种选择是使用shuffle()。

    $strings = array(
        'Red',
        'Blue',
    );
    shuffle($strings);
    echo reset($strings);
    

    【讨论】:

    • shuffle() 和 array_rand() 的主要区别
    • 这是个问题吗?如果是这样,他们各自的代码示例和相关链接的手册页清楚地显示了差异。
    【解决方案3】:

    使用数组:

    $input = array("Red", "Blue", "Green");
    echo $input[array_rand($input)];
    

    【讨论】:

    • Repped 这也是意思的答案 - 干净简单的两行代码。由于解释而标记了其他答案,因此其他人可能会受益。
    • @TheBlackBenzKid 对不起,我不关注? “Repped,这也是意思的答案”???
    • 我将此答案标记为 UP - 我“重新”了它;我给了它声誉-加分。并且意味着我正在为我的解决方案使用代码 - 代码没有完全标记为答案,因为上面的答案有更多其他人可能受益的解释 - 但是为了你的努力和帖子,我想像他们所说的那样给出一些“业力” .
    【解决方案4】:

    遇到了这个在谷歌搜索结果中名列前茅的老问题。您可以有两个以上的选择,并且仍然可以在一行中获得所有内容。

    echo ['green', 'blue', 'red'][rand(0,2)];
    

    【讨论】:

      【解决方案5】:

      array_rand() 可能是最好的方法:

      $varNames = array('apple','banana');
      $var = array_rand($varNames);
      echo ${$varNames[$var]};
      

      【讨论】:

        【解决方案6】:

        函数rand() 有两个参数:一个随机数的下限和一个上限。你不能使用这样的变量,因为这不是函数的工作方式。

        查看文档:
        http://php.net/rand

        实现你想要的一个简单的方法是:

        $array = array();
        $array[0] = 'banana';
        $array[1] = 'orange';
        $randomSelected = $array[rand(0,(count($array)-1))];
        

        据我所知,这个解决方案比array_rand() 更快。我看看能不能找到它的来源。

        【讨论】:

        • 考虑到这一点 - 但是这里的每个人都在说 array_rand()
        • 我只会使用array_rand(),因为这更难阅读和弄清楚发生了什么。维护的简单性每次都胜过这些微优化。
        • 没错,但大多数程序员都能够弄清楚这两个函数的简单用法。
        • 那么,与仅使用array_rand() 相比,究竟节省了多少? CPU proc time 比程序员阅读标准模式的奇怪实现要便宜得多,即使您的方法稍微快一些。
        • 为了速度。这得了。我只对速度感兴趣。谢谢
        猜你喜欢
        • 1970-01-01
        • 2023-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        • 1970-01-01
        相关资源
        最近更新 更多