PHP随机文本一次


PHP random text once

我一直在寻找问题的解决方案,但一直没有找到,所以我决定创建一个stackerflow帐户来自己提问。

这就是我迄今为止创建的:

<? //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"answers"test"但我希望他们每次都不一样。因此,如果第一个输入类型是"test",我希望第二个输入类型为"test1",但我似乎无法获得这个有效的

有人知道我做错了什么吗?或者有什么代码可以让这一切成为可能吗?

如果你有有限的可能性,把它们放在一个数组中,打乱它,然后从中移动/弹出元素:

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

步骤A-您正在选择一个数字,1或2步骤B-您正在通过您的交换机案例运行该数字,此案例仅获取它接收到的数字并为其分配一个值。因此,如果您的数字是1,那么您的交换机案例将以$retrieved_data="test"结束。如果您的数字是2,则切换案例转到案例2并分配$retrieved_data="test 1"。步骤C=$retrieved_data被分配给您的表单(它只有一个值,"test"或"test1"。

为此使用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)即可。