Как сделать последовательность массивов?
как-то так:$str = '';
$isRange = false;
for( $i = 0, $length = count( $myArray ); $i < $length; $i++ ) {
	if( isset($myArray[ $i + 1 ] ) ) {
		if( $myArray[ $i + 1 ] == $myArray[ $i ] + 1 ) {
			if( $isRange ) {
				continue;
			}
			$str .= $myArray[ $i ] . '-';
			$isRange = true;
		}
		else {
			$isRange = false;
			$str .= $myArray[ $i ] . ',';
		}
	}
	else {
		$str .= $myArray[ $i ];
	}
}
echo $str;
Вот что у меня получилось, через разницу между числами и количеством пройденных элементов$myArray = Array(1,2,3,4,6,7,8,10,11,13,14,15,17,19);
	
	$num = current($myArray);
	$difference = $elements = 0;
	$result = Array();
	
	foreach ($myArray as $k=>$v) {
		$prev = $k>0 ? $myArray[$k-1] : 0;
		$difference += $v - $prev;
		$elements++;
		
		if ($difference > $elements) {
			$result[] = $num . ($elements>1 && $prev ? '-' . $prev : '');
			$num = $v;
			$difference = $elements = 0;
		}
	}
	
	// также добавить последний элемент или разницу между ним и последним запомненным
	$result[] = $num . ($elements>1 && $v ? '-' . $v : '');
	
	echo implode(',', $result);