在表格中插入字符串中的随机字母和字母,就像在wordsearch中一样

时间:2013-12-06 06:26:51

标签: php arrays tcpdf

此代码用于显示带有表格的随机字母,就像在单词搜索游戏中一样。问题是,。我不能在表中插入字符串。如果我有字符串数组怎么办?例如,样本,它们,权力,一些。如何在单元格中插入这些字符串?

我正在创建类似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);
     }

2 个答案:

答案 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行代码。所以我说的远远超出了堆栈溢出的范围。

http://fswordfinder.sourceforge.net/

答案 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'
...