1

我目前正在研究一个关于 php 的学校项目。任务是设计一个网站,带有一些 php 导航、一个计算器、一个真人秀和一些其他功能。现在,我想得到一些帮助。Truthsayer 是一个 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>
4

1 回答 1

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

演示!

于 2013-10-21T12:20:35.107 回答