У меня есть массив строковых значений, которые иногда образуют повторяющиеся шаблоны значений ('a', 'b', 'c', 'd')
$array = array(
'a', 'b', 'c', 'd',
'a', 'b', 'c', 'd',
'c', 'd',
);
Я хотел бы найти повторяющиеся шаблоны, основанные на порядке массива, и сгруппировать их тем же самым порядком (для его поддержки).
$patterns = array(
array('number' => 2, 'values' => array('a', 'b', 'c', 'd')),
array('number' => 1, 'values' => array('c'))
array('number' => 1, 'values' => array('d'))
);
Обратите внимание, что [a, b], [b, c] и [c, d] сами по себе не являются шаблонами, потому что они находятся внутри более крупного шаблона [a, b, c, d] и последнего [c, d] появляется только один раз, так что это не шаблон - только отдельные значения "c" и "d"
Другой пример:
$array = array(
'x', 'x', 'y', 'x', 'b', 'x', 'b', 'a'
//[.......] [.] [[......] [......]] [.]
);
который производит
$patterns = array(
array('number' => 2, 'values' => array('x')),
array('number' => 1, 'values' => array('y')),
array('number' => 2, 'values' => array('x', 'b')),
array('number' => 1, 'values' => array('a'))
);
Как я могу это сделать?