回答編集履歴
2
空配列
test
CHANGED
@@ -62,6 +62,10 @@
|
|
62
62
|
|
63
63
|
var_dump(is_continuous_array([3 => 1, 2, 3, 4, 5])); // bool(false)
|
64
64
|
|
65
|
+
var_dump(is_continuous_array([])); // bool(false)
|
66
|
+
|
67
|
+
var_dump(is_continuous_array([3])); // bool(true) ←これってfalseのほうがいい?
|
68
|
+
|
65
69
|
```
|
66
70
|
|
67
71
|
|
1
厳密Ver
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
{
|
16
16
|
|
17
|
-
return range(
|
17
|
+
return range($array[0], $array[0] + count($array) - 1) === $array;
|
18
18
|
|
19
19
|
}
|
20
20
|
|
@@ -25,3 +25,43 @@
|
|
25
25
|
var_dump(is_continuous_array([5, 6, 7, 9, 10])); // bool(false)
|
26
26
|
|
27
27
|
```
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
----
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
もうちょっと厳密に判定するように書くと
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
```php
|
40
|
+
|
41
|
+
function is_continuous_array(array $array)
|
42
|
+
|
43
|
+
{
|
44
|
+
|
45
|
+
return $array // 要素が1つ以上あるか
|
46
|
+
|
47
|
+
&& array_filter($array, 'is_int') === $array // 整数以外のものを含んでいないか
|
48
|
+
|
49
|
+
&& is_array(json_decode(json_encode($array))) // キーが0からの整数連番で連続しているか
|
50
|
+
|
51
|
+
&& range($array[0], $array[0] + count($array) - 1) === $array; // 値が整数連番で連続しているか
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
var_dump(is_continuous_array([1, 2, 3, 4, 5])); // bool(true)
|
58
|
+
|
59
|
+
var_dump(is_continuous_array([5, 6, 7, 9, 10])); // bool(false)
|
60
|
+
|
61
|
+
var_dump(is_continuous_array([1, 2, [3], 4, 5])); // bool(false)
|
62
|
+
|
63
|
+
var_dump(is_continuous_array([3 => 1, 2, 3, 4, 5])); // bool(false)
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
|