PHP单词生成器


PHP word generator

>我找到了这段代码,它通过堆栈溢出上的给定字符串生成单词,在我看来,它工作得很好,只有一个问题......它使用数组,众所周知数组具有最大维度,所以我问您是否有办法更改此代码,以便不使用数组而仅使用"echo",或者可能是外部.txt文件或任何您想要的没有内存限制的内容

$letters = str_split("abc");
$combos = $letters;
$lastres = $letters;
for ($i = 1; $i < count($letters); $i++) {
    $newres = array();
    foreach ($lastres as $r) {
        foreach ($letters as $let) {
            $newres[] = $r . $let;
        }
    }
    foreach ($newres as $w) {
        $combos[] = $w;
    }
    $lastres = $newres;
}
foreach($combos as $comb){
    echo $comb."<br>";
}

我试图想出一个解决方案,但无法得到它:/
如果需要,可以根据需要更改代码,没有问题。

唯一变得非常大的数组是 $combos 。如果您不需要保存生成的所有单词,只需打印出单词,而不是将其添加到此数组中。所以只需更改:

    $combos[] = $w;

    echo $w . '<br>';

但是,如果您生成的单词太多,以至于会导致服务器上的内存问题,则可能还需要很长时间才能将结果发送到浏览器,并且浏览器可能会耗尽尝试显示页面的内存。

在某种程度上,数组可能具有"最大维度"。但是,它们具有此最大尺寸或大小的唯一原因是因为 PHP 具有无法超过的最大内存限制。同样的限制也适用于PHP存储在内存中的任何其他内容,可以是字符串,缓冲区,图像等。因此,简单地将数组转换为字符串并不能解决极限问题。

除非你的单词很长,或者内存限制非常低,你不能在你的服务器上更改,否则我建议坚持使用数组,因为它可以在 10 种情况下的 9 种情况下工作。