假拉丁语生成器PHP

时间:2017-09-14 14:58:56

标签: php

我不是要求提供作业帮助,只是朝着正确的方向努力!

最近开始在大学学习PHP,其中一个练习是创建一个假的拉丁语生成器。

参数必须如下:

每个单词都有十分之一的机会在其后面放一个逗号 每个句子必须包含8到25个单词 每个段落必须包含3到7个句子 每个页面必须包含3到5个段落 每个起始句必须以大写字母开头。

我的代码如下:

<?php
$latin_words = array("lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut",
                     "laoreet", "dolore", "magna", "aliquam", "erat", "volutpat", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud",
                     "exerci", "tation", "ullamcorper", "suscipit", "lobortis", "ni", "sl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem",
                     "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate", "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu",
                     "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio", "dignissim", "qui", "blandit", "praesent", "luptatum", "zzril",
                     "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud", "exerci", "tation", "ullamcorper",
                     "suscipit", "lobortis", "nisl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem", "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate",
                     "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio",
                     "dignissim", "qui", "blandit", "praesent", "luptatum", "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi");

$max = count($latin_words);
for($pagelen = rand(3,5); $pagelen != 6; $pagelen++)
{
    $word = rand(0,$max - 1);
    for($para = rand(3,7); $para != 8; $para++)
    {
        echo ucfirst($latin_words[$word]);
        for($sentlen = rand(8,25); $sentlen != 26; $sentlen++)
        {
            $word = rand(0,$max - 1);
            echo " " . $latin_words[$word];
            for($comchance = rand(1,10); $comchance == 10; $comchance++)
            {
                echo ",";
            }
        }
        echo ". ";
    }
    echo "<br/><br/>";
}
?>

  • 我以为自己已经把它弄好了,直到我开始注意到我有时每页只有一段。

  • 我也不确定如何阻止逗号在句子结尾处完全停止 - 我读了一个开关可能有效但我们没有覆盖这个所以我对添加一个进行了警惕。
  • 非常感谢任何正确方向的推动!

    2 个答案:

    答案 0 :(得分:2)

      

    我以为我已经做好了,直到我开始注意到我有时每页只能获得一段。

    考虑你的循环条件:

    for($pagelen = rand(3,5); $pagelen != 6; $pagelen++)
    

    这将设置一个介于3和5之间的随机数,并将该数字递增,直到等于6。

    这意味着有时$pagelen将设置为5,循环执行一次,然后$pagelen++$pagelen设置为{{ 1}},所以6变为假,你的循环结束。

    相反,你应该从0开始,并增加到3到5之间的随机数。

    $pagelen != 6

    你的其他循环有同样的问题。这不会完全解决它,但希望它可以帮助你朝着正确的方向努力。

    答案 1 :(得分:1)

    在此,希望这会有所帮助:

    $latin_words = array("lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut",
                             "laoreet", "dolore", "magna", "aliquam", "erat", "volutpat", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud",
                             "exerci", "tation", "ullamcorper", "suscipit", "lobortis", "ni", "sl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem",
                             "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate", "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu",
                             "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio", "dignissim", "qui", "blandit", "praesent", "luptatum", "zzril",
                             "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud", "exerci", "tation", "ullamcorper",
                             "suscipit", "lobortis", "nisl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem", "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate",
                             "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio",
                             "dignissim", "qui", "blandit", "praesent", "luptatum", "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi");
    
    
    $max = count($latin_words);
    for($pagelen = 0; $pagelen < rand(3,5); $pagelen++)
    {
        for($para = 0; $para < rand(3,7); $para++)
        {
            // first word here, so the max nr. of words in the next for statement will be rand(7,24)
            echo ucfirst($latin_words[rand(0,$max - 1)]);
            $nr_words = rand(7,24);
            for($sentlen = 0; $sentlen < $nr_words; $sentlen++)
            {
                // if this is not the last word
                if($sentlen < $nr_words - 1)
                {
                    $word = $latin_words[rand(0,$max - 1)];
                    echo " " . $word;
                    // 10% chance
                    if(rand(1,10) == 1) echo ",";
                }
                else
                {
                    // this is the last word so echo a full stop
                    echo ". ";
                }
            }
        }
        echo "<br><br>";
    }