я нашел этот фрагмент кода, который генерирует слова с помощью заданной строки в 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>";
}
Я пытался найти решение, но не могу его найти: /
Если вам нужно, вы можете изменить код так, как хотите, проблем нет.
Единственный массив, который становится действительно большим $combos
, Если вам не нужно сохранять все сгенерированные слова, просто распечатайте слово, а не добавляйте его в этот массив. Так что просто поменяйте:
$combos[] = $w;
в
echo $w . '<br>';
Но если вы генерируете так много слов, что это вызовет проблемы с памятью на сервере, вероятно, потребуется также навсегда отправить результаты в браузер, и браузеру может не хватить памяти, пытаясь отобразить страницу.
С одной стороны, вы можете сделать так, чтобы массивы имели «максимальное измерение». Однако единственная причина, по которой они имеют это максимальное измерение или размер, заключается в том, что PHP имеет максимальный предел памяти, который он не может превышать. Тот же самый предел также применяется ко всему, что PHP хранит в памяти, это могут быть строки, буферы, изображения и т. Д. Из-за этого простое преобразование массива в строку не решит проблему ограничения.
Если у вас нет очень длинного слова или очень низкого предела памяти, который вы не можете изменить на своем сервере, я бы предложил просто придерживаться массива, поскольку он будет работать в 9 из 10 случаев.