我不是要求提供作业帮助,只是朝着正确的方向努力!
最近开始在大学学习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/>";
}
?>
非常感谢任何正确方向的推动!
答案 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>";
}