此代码用于显示带有表格的随机字母,就像在单词搜索游戏中一样。问题是,。我不能在表中插入字符串。如果我有字符串数组怎么办?例如,样本,它们,权力,一些。如何在单元格中插入这些字符串?
我正在创建类似http://children.pfcblogs.com/learn/word-search-test/
的内容 $row = 10;
$col = 10;
$w = 8;
$h = 8;
for ($r=1;$r<=$row;$r++) {
for ($c=1;$c<=$col;$c++) {
$pdf->Cell($w,$h,$str= array_merge(range('A','Z'))[mt_rand(1,24)],1,0,'C');
}
$pdf->Ln($h);
}
答案 0 :(得分:1)
这远远超出了stackoverflow,但我心情很好。 : - )
所以这需要用逗号分隔的一串单词(你可以添加更多)并将它们分成数组,然后找到适合的单词,直到它变为1个字母,然后它只使用之前的随机字母填补空间。
这远非完美的一件事,你会看到所有的行都是以单词开头,以随机字母结尾。而且,单词只是水平而不是垂直。构建单词水平,垂直和对角线的矩阵非常复杂,当然超出了本网站的范围。
这是代码。这是一个好的开始。
$row = 10;
$col = 10;
$w = 8;
$h = 8;
$characters = range('A','Z');
$words="in, on, it, up, at, am, of, and, band, banned, bland, brand, brande, canned, chand, fanned, gland, grand, grande, hand, land, lande, mande, manned, panned, planned, rand, sande, scanned, shand, spanned, stand, strand, strande, tanned, vande, zand";
$wordList = explode(",",$words);
$myWord="";
$max = count($characters) - 1;
for ($r=1;$r<=$row;$r++) {
for ($c=1;$c<=$col;$c++) {
//if we have more than 1 space
//(enough room for a 2 or more letter word)
$maxWordLength=$col-$c+1;
if($maxWordLength > 1){
//get a word if we need a new one
if(empty($myWord)){
$wordLen=99;
while($wordLen > $maxWordLength){
$myWord=trim(strToUpper($wordList[mt_rand(0,count($wordList))]));
$wordLen=strlen($myWord);
}
}
//get the next letter of the word we're using
$thisChar=substr($myWord,0,1);
$myWord=substr($myWord,1);
}else{
//if we don't have room for a word put a random letter
$thisChar=$characters[mt_rand(0,$max)];
}
$pdf->Cell($w,$h,$thisChar,1,0,'C');
//for debugging (remove this)
echo($thisChar.' ');
}
$pdf->Ln($h);
//for debugging remove this
echo('<hr>');
}
此外,这里还有一个指向现有开源PHP解决方案的链接,该解决方案与您正在寻找的内容类似。我下载了它并偷看了它,它是大约3000行代码。所以我说的远远超出了堆栈溢出的范围。
答案 1 :(得分:0)
试试这段代码......
$row = 10;
$col = 10;
$w = 8;
$h = 8;
$characters = range('A','Z');
$max = count($characters) - 1;
for ($r=1;$r<=$row;$r++) {
for ($c=1;$c<=$col;$c++) {
$pdf->Cell($w,$h,$characters[mt_rand(0,$max)],1,0,'C');
//for debugging (remove this)
echo("$w,$h,{$characters[mt_rand(0,$max)]},1,0,'C'");
echo('<br>');
}
$pdf->Ln($h);
}
我在echo代码中添加了以查看它正在做什么,因为我没有你正在使用的PDF库所以我无法测试但是echo输出是这样的,所以假设pdf单元格方法已经设置这是正确的。
8,8,D,1,0,'C'
8,8,S,1,0,'C'
8,8,C,1,0,'C'
8,8,C,1,0,'C'
8,8,F,1,0,'C'
8,8,Q,1,0,'C'
8,8,B,1,0,'C'
8,8,H,1,0,'C'
8,8,C,1,0,'C'
8,8,N,1,0,'C'
8,8,A,1,0,'C'
8,8,H,1,0,'C'
8,8,Y,1,0,'C'
8,8,T,1,0,'C'
8,8,B,1,0,'C'
8,8,V,1,0,'C'
8,8,Y,1,0,'C'
...