我一直在寻找问题的解决方案,但一直没有找到,所以我决定创建一个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)
即可。