という制約があれば,以下のようなシンプルな関数でチェックできます。
php
1function is_continuous_array(array $array)
2{
3 return range($array[0], $array[0] + count($array) - 1) === $array;
4}
5
6var_dump(is_continuous_array([1, 2, 3, 4, 5])); // bool(true)
7var_dump(is_continuous_array([5, 6, 7, 9, 10])); // bool(false)
もうちょっと厳密に判定するように書くと
php
1function is_continuous_array(array $array)
2{
3 return $array // 要素が1つ以上あるか
4 && array_filter($array, 'is_int') === $array // 整数以外のものを含んでいないか
5 && is_array(json_decode(json_encode($array))) // キーが0からの整数連番で連続しているか
6 && range($array[0], $array[0] + count($array) - 1) === $array; // 値が整数連番で連続しているか
7}
8
9var_dump(is_continuous_array([1, 2, 3, 4, 5])); // bool(true)
10var_dump(is_continuous_array([5, 6, 7, 9, 10])); // bool(false)
11var_dump(is_continuous_array([1, 2, [3], 4, 5])); // bool(false)
12var_dump(is_continuous_array([3 => 1, 2, 3, 4, 5])); // bool(false)
13var_dump(is_continuous_array([])); // bool(false)
14var_dump(is_continuous_array([3])); // bool(true) ←これってfalseのほうがいい?