【问题标题】:Assigning specific text to a number将特定文本分配给数字
【发布时间】:2014-02-04 05:19:13
【问题描述】:

我正在尝试将文本分配给数字。到目前为止,我设法让 PHP 在每次刷新/打开页面时成功生成 10 个随机数。我现在要做的就是为每个数字分配一个文本值。例如,1=Bob 2=Jim 3=Alice 等。我见过很多人想知道如何以文本形式获取数字(即“一”= 1、“二”= 2 等),但是我见过的方法对此不起作用。

我目前的代码如下:

<?php

$name = array();

// build a list of ten numbers...

for ($i = 0; $i < 10; $i++) {

// get a 'new' number...

do {
   $number = rand(1,10);
  } while (in_array($number, $name));
 $name[] = $number;
}

echo 'Results:', "\n".join($name, "\n");

?>

就目前而言,我上面的代码输出了 10 个介于 1 和 10 之间的随机数,每个数字只输出一次,并且该范围内的每个数字每次都有 100% 的机会被输出。这很重要,因为此代码的目的是用作随机名称生成器。还有其他方法可以做到这一点,但我尝试过的方法往往不符合这个要求。

甚至可能有更简单的方法来做到这一点。

有人可以帮忙吗?我还在努力学习 PHP :)

谢谢

【问题讨论】:

  • 这个答案可能会有所帮助:stackoverflow.com/a/20309160
  • 您希望输出是什么?名称到值的数组?
  • 我希望输出只是名称(例如:Bob、Jim、Alice 等),但顺序应该是随机的。

标签: php string random numbers output


【解决方案1】:

你在寻找这样的东西吗?

$source = array(1 => "Bob", 2 => "Jim", 3 => "Alice", 4 => "Roman", 5 => "Wiliam", 6 => "Kenneth", 7 => "John", 8 => "Mark", 9 => "Richard", 10 => "Peter");

$name = array();
$numbers = array();

// build a list of ten numbers...
for ($i = 0; $i < 10; $i++) {

// get a 'new' number...
do {
   $number = rand(1,10);
  } while (in_array($number, $numbers));
 $numbers[] = $number;
 $name[] = $source[$number];
}

echo join($name, "\n");

数组 $source 的每个名称在输出中出现一次。

【讨论】:

    【解决方案2】:

    如果它只是您需要的名称的随机顺序,您可以使用shuffle

    $names = array("Bob","Fred","Tony","Jim");
    
    shuffle($names);
    
    print_r($names);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 2012-10-09
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多