我目前正在开发一个关于php的学校项目。任务是设计一个带有一些php导航,计算器,真相和其他功能的网站。现在,我有一个问题,我想得到一些帮助。真相是一个php随机函数,它从我设置的数组中打印出一个“真相”。根据我给出的数字,真相也打印出不同数量的真相。例如:如果我在一个方框中输入“3”并按下回车键,它将发布三个真相。
现在的问题是:由于它完全随机化了它的输出,我倾向于在彼此之后得到相同的真理。例如,我要求10个真理,其中4-5个与其他真理相同。因此,我想知道是否有人知道如何避免一遍又一遍地发布相同的真相。我认识的人建议暂时从数组中删除真相,但我不确定我将如何做到这一点。
有什么想法吗?非常感谢= P
我的代码:
<html>
<body>
<div id="Sannsigar">
<?php
if(isset($_POST["psc"])) {
$adder1 = $_POST["i1"];
$SannOutput= "";
$Val = array("1=Ichi","2=Ni","3=San","4=Shi/Yon","5=Go","6=Roku","7=Nana","8=Hachi","9=Kyu","10=Jyu");
switch ($adder1) {
case "1" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
"<br>";
break;
}
case "2" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "3" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "4" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "5" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "6" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "7" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "8" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "9" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
case "10" : {
for ($x=1; $x<=$adder1; $x++)
{
echo $Val[array_rand($Val)] . "<br>"; }
break;
}
default: {
Echo "FEIL! Feil inndata. Oppgje eit tal mellom 1 og 10.";
break;
}
}
$Footer = fopen("Sannsigar/footer.php", "w");
fwrite ($Footer, "$adder1 sanning(ar) fr� Birger AS" . "<br>");
fclose($Footer);
}
?>
</div>
</body>
</html>
答案 0 :(得分:0)
您无需为每个输入定义switch
个案。您可以使用一个小功能实现相同的功能。
function getRandom($adder1, $Val) {
$randoms = range(0, $adder1-1);
shuffle($randoms);
if ($adder1 <= count($Val)) {
foreach ($randoms as $r) {
echo $Val[$r]."\n";
}
}
}
可以按如下方式调用该函数:
getRandom(3, $Val);
示例输出:
9=Kyu
3=San
10=Jyu