質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

3196閲覧

php 配列の値が連番かどうかの判定

lol

総合スコア85

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/09/15 09:46

編集2017/09/15 09:49

0 =>
array (size=1)
'id' => int 1
1 =>
array (size=1)
'id' => int 3
2 =>
array (size=1)
'id' => int 4
1,3,4なら連番ではないのでNG

0 =>
array (size=1)
'id' => int 1
1 =>
array (size=1)
'id' => int 2
2 =>
array (size=1)
'id' => int 3
1,2,3なら連番ではないのでOK

みたいな、配列の連番チェックはどのように行えばよいでしょうか?

パターンは0,1,2,3,4の中の全パターンです。
0,1
0,2
0,3
0,4
....みたいな。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/09/15 10:07

「1,2,3なら連番ではないのでOK 」ではなく「連番だからOK」ですよね?
kei344

2017/09/15 11:28

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが良いと思います。
guest

回答2

0

ベストアンサー

自分のやったソースとかあると、どこで詰まったのか指摘しやすいんですけどね。。。

php

1<?php 2$array_1 = [ 3 [ 4 'id' => 1, 5 ], 6 [ 7 'id' => 3, 8 ], 9 [ 10 'id' => 4, 11 ], 12 ] ; 13$array_2 = [ 14 [ 15 'id' => 1, 16 ], 17 [ 18 'id' => 2, 19 ], 20 [ 21 'id' => 3, 22 ], 23 ] ; 24$array_3 = [ 25 [ 26 ], 27 [ 28 'id' => 2, 29 ], 30 [ 31 'id' => 3, 32 ], 33 ] ; 34$array_4 = [ 35 [ 36 'id' => 2, 37 ], 38 [ 39 'id' => 3, 40 ], 41 [ 42 'id' => 4, 43 ], 44 ] ; 45function is_serial(array $arr){ 46 $i = isset($arr[0]['id'])?$arr[0]['id']:''; 47 foreach ($arr as $key => $val) { 48 if(!isset($val['id']) || $val['id']!==$i){ 49 return false; 50 } 51 $i += 1; 52 } 53 return true; 54} 55echo 'array_1:',is_serial($array_1)?'連番':'連番じゃない'; 56echo PHP_EOL; 57echo 'array_2:',is_serial($array_2)?'連番':'連番じゃない'; 58echo PHP_EOL; 59echo 'array_3:',is_serial($array_3)?'連番':'連番じゃない'; 60echo PHP_EOL; 61echo 'array_4:',is_serial($array_4)?'連番':'連番じゃない';

投稿2017/09/15 10:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ループして前の値と比較しては?

php

1$pre = null; 2foreach($array as $key=>$value){ 3 if(!is_null($pre) && ($value - $pre) != 1){ //前の値と差が1か(連番か) 4 echo "NG"; 5 break; 6 } 7 $pre = $value; //前の値を保持 8}

投稿2017/09/15 10:10

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問