<?php
function array_pattern($array, $pattern){
$ret = array(array());
$found = true;
foreach($pattern as $val){
$x = array_search($val, $array);
if($x === FALSE){
$found = FALSE;
break;
}
unset($array[$x]);
$ret[0][] = $x;
}
return $found ? array_merge($ret, array_pattern($array, $pattern)) : array();
}
$a = array_pattern(array(0 => 'A', 1 => 'A', 2 => 'B', 3 => 'B', 4 => 'B'), array('A', 'B'));
$b = array_pattern(array(0 => 'F', 5 => 'G', 78 => 'R', 2 => 'D'), array('G', 'R', 'F'));
echo "Example 1\n";
print_r($a);
echo "\nExample 2\n";
print_r($b);