массивы — генератор слов PHP

я нашел этот фрагмент кода, который генерирует слова с помощью заданной строки в stackoverflow, и он работает, на мой взгляд, отлично, есть только проблема … Он использует массивы, и, как мы все знаем, массивы имеют максимальное измерение, поэтому я спросить вас, есть ли способ изменить этот код, чтобы не использовать массивы, а только «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>";
}

Я пытался найти решение, но не могу его найти: /
Если вам нужно, вы можете изменить код так, как хотите, проблем нет.

0

Решение

Единственный массив, который становится действительно большим $combos, Если вам не нужно сохранять все сгенерированные слова, просто распечатайте слово, а не добавляйте его в этот массив. Так что просто поменяйте:

    $combos[] = $w;

в

    echo $w . '<br>';

Но если вы генерируете так много слов, что это вызовет проблемы с памятью на сервере, вероятно, потребуется также навсегда отправить результаты в браузер, и браузеру может не хватить памяти, пытаясь отобразить страницу.

1

Другие решения

С одной стороны, вы можете сделать так, чтобы массивы имели «максимальное измерение». Однако единственная причина, по которой они имеют это максимальное измерение или размер, заключается в том, что PHP имеет максимальный предел памяти, который он не может превышать. Тот же самый предел также применяется ко всему, что PHP хранит в памяти, это могут быть строки, буферы, изображения и т. Д. Из-за этого простое преобразование массива в строку не решит проблему ограничения.

Если у вас нет очень длинного слова или очень низкого предела памяти, который вы не можете изменить на своем сервере, я бы предложил просто придерживаться массива, поскольку он будет работать в 9 из 10 случаев.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector