function shortest_identical_consecutive_subarray(array $arr): array
{
if (count($arr) === 0) {
return [];
}
$bestStart = 0;
$bestLen = count($arr);
$currentStart = 0;
$currentLen = 1;
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i] === $arr[$i - 1]) {
$currentLen++;
} else {
if ($currentLen < $bestLen) {
$bestLen = $currentLen;
$bestStart = $currentStart;
}
$currentStart = $i;
$currentLen = 1;
}
}
if ($currentLen < $bestLen) {
$bestLen = $currentLen;
$bestStart = $currentStart;
}
return array_slice($arr, $bestStart, $bestLen);
}
// ------------------------------------------------------------
// MAIN PROGRAM
// ------------------------------------------------------------
$arr = [
3,3,3,
7,7,7,7,7,
2,2,
5,5,5,5,
9,9,9,9,9,9
];
$resultArr = shortest_identical_consecutive_subarray($arr);
echo "Array result: ";
foreach ($resultArr as $x) {
echo $x . " ";
}
/*
run:
Array result: 2 2
*/