0

我多年来一直在寻找解决问题的方法,但仍然没有找到,所以我决定创建一个 stackoverflow 帐户来自己提出问题。

这是我到目前为止创建的:

<? //Chooses a random number $num = Rand (1,2);
switch ($num){
case 1: $retrieved_data = "test"; break;
case 2: $retrieved_data = "test1"; break;
} ?> 

这就是我希望文本出现的地方;

<form enctype="multipart/form-data" action="upload.php" method="POST">
<input name="<?php echo $retrieved_data; ?>" type="file" />
<input name="<?php echo $retrieved_data; ?>" type="file" />
<input type="submit" value="Upload" /></form>

我的问题是我希望在这些地方随机显示“test1”和“test”,但我希望它们每次都不同。因此,如果第一个输入类型是“test”,我希望第二个输入类型是“test1”,但我似乎无法让它工作

有谁知道我做错了什么或使这成为可能的代码?

4

3 回答 3

3

如果您的可能性有限,请将它们放入一个数组中,对其进行随机播放并从中移位/弹出元素:

$retrieved_data = array('test', 'test1');
shuffle($retrieved_data);

$random1 = array_shift($retrieved_data);
$random2 = array_shift($retrieved_data);
于 2013-07-13T15:35:24.363 回答
0

步骤 A - 您正在选择一个数字,1 或 2 步骤 B - 您正在通过您的 switch case 运行该数字,这种情况仅获取它收到的数字并为其分配一个值。因此,如果您的编号为 1,则您的 switch case 以 $retrieved_data = "test" 结束。如果您的号码是 2,则您的 switch case 转到 case 2 并分配 $retrived_data = "test 1"。步骤 C = $retrived_data 被分配给您的表单(它将只有一个值,“test”或“test1”。

于 2013-07-13T15:32:04.050 回答
0

为此使用array_rand()

$aName = array('test1', 'test2', 'whatever');

function getRandom(array &$aName)
{
    if (($key = array_rand($aName)) === NULL) {
        throw new Exception('No more randomness!');
    }

    $value = $aName[$key];
    unset($aName[$key]);
    return $value;
}

因此getRandom($aName),当您需要数组中的唯一随机项时,只需使用即可。

于 2013-07-13T15:35:45.113 回答