Генерация всех комбинаций из набора символов

Небольшая PHP функция, которая сгенерирует массив всех возможных строк заданной длины из набора символов.

function generator_words($chars, $length, &$words, $prefix = '') {
	if (strlen($prefix) == $length) {
		$words[] = $prefix;
		return;
	}

	for ($i = 0; $i < strlen($chars); $i++) {
		generator_words($chars, $length, $words, $prefix . $chars{$i});
	}
	
	return;
}
PHP

Использование

Например, в результате нужен массив строк длиной четыре символа из всех цифр.

generator_words('0123456789', 4, $words);
var_dump($words);
PHP

Результат:

array(10000) {
	[0]=> string(4) "0000"
	[1]=> string(4) "0001"
	[2]=> string(4) "0002"
	[3]=> string(4) "0003"
	...
	[9996]=> string(4) "9996"
	[9997]=> string(4) "9997"
	[9998]=> string(4) "9998"
	[9999]=> string(4) "9999"
}

Или строки длиной в три символа из всех букв английского алфавита.

generator_words('abcdefghijklmnopqrstuvwxyz', 3, $words);
var_dump($words);
PHP

Результат:

array(17576) {
	[0]=> string(3) "aaa"
	[1]=> string(3) "aab"
	[2]=> string(3) "aac"
	[3]=> string(3) "aad"
	...
	[17572]=> string(3) "zzw"
	[17573]=> string(3) "zzx"
	[17574]=> string(3) "zzy"
	[17575]=> string(3) "zzz"
}
20.05.2020 , обновлено 22.05.2020
Предыдущая запись SVG спрайты
Следующая запись Вывод массива колонками

Комментарии

, чтобы добавить комментарий.

Другие публикации

Сортировка массивов
В продолжении темы работы с массивами поговорим о типичной задаче – их сортировке. Для ее выполнения в PHP существует множество функций, их подробное описание можно посмотреть на php.net, рассмотрим...
17.11.2017
20275
+2
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
22.05.2020
1019
0
Склонение слов после числительных в PHP
В интернет магазинах, CRM и других сервисах для «правильности» есть необходимость склонять существительных после чисел...
24.08.2018
3412
+2
Работа с массивами PHP – создание, наполнение, удаление
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
29.10.2017
15004
+3
Генерация счета на оплату PDF PHP
С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf - это конвертер HTML в PDF который...
16.02.2018
20817
+8
Постраничный вывод массива
В случаях, когда нужно вывести большой PHP-массив постранично, без использования баз данных.
12.03.2020
1188
+2