Nach Ihrer Frage soll dieser Code funktionieren:
function findHighestSeriesCount($seriesArray)
{
if (1 >= count($seriesArray))
{
# catch the special case when array has only 0 or 1 element
return count($seriesArray);
}
$highestCount = -1;
$currentCount = 1;
$lastElement = $seriesArray [0];
$getCorrectHighValue = function() use (&$highestCount, &$currentCount)
{
return $highestCount < $currentCount ? $currentCount : $highestCount;
};
for ($arrayIndex = 1 ; $arrayIndex < count($seriesArray) ; $arrayIndex++)
{
if ($lastElement + 1 == $seriesArray [$arrayIndex])
{
$currentCount++;
}
else
{
$highestCount = $getCorrectHighValue();
$currentCount = 1;
}
$lastElement = $seriesArray [$arrayIndex];
}
return $getCorrectHighValue();
}
Testskript:
$seriesArray = [1,2,3,4,6,7];
echo sprintf("array=%s - highest count=%d<br>", implode(",", $seriesArray),
findHighestSeriesCount($seriesArray));
$seriesArray = [1,2,3,4,5,6,8];
echo sprintf("array=%s - highest count=%d<br>", implode(",", $seriesArray),
findHighestSeriesCount($seriesArray));
$seriesArray = [1,2,3,5];
echo sprintf("array=%s - highest count=%d<br>", implode(",", $seriesArray),
findHighestSeriesCount($seriesArray));
$seriesArray = [1,2,3,5,6,7,8];
echo sprintf("array=%s - highest count=%d<br>", implode(",", $seriesArray),
findHighestSeriesCount($seriesArray));
$seriesArray = [1,2,4,5,6,8,9];
echo sprintf("array=%s - highest count=%d<br>", implode(",", $seriesArray),
findHighestSeriesCount($seriesArray));
Ausgabe:
array=1,2,3,4,6,7 - highest count=4
array=1,2,3,4,5,6,8 - highest count=6
array=1,2,3,5 - highest count=3
array=1,2,3,5,6,7,8 - highest count=4
array=1,2,4,5,6,8,9 - highest count=3
Bitte erläutern Sie Ihre Frage. Der Text macht keinen Sinn. –
@GordonLinoff Arie hätte sein Problem genauer erklären können, aber es macht im Endeffekt Sinn. –
@JeffPuckettII. . . Sie sind sinnvoll, wenn Sie die längste Sequenz betrachten (5, 6, 7, 8 und 4, 5, 6). –