いつもお世話になります。
下記のようにIF入れ子で分岐をして3×3×3で27通りの処理をさせたいのですが、もっとシンプルに記述方法があれば御指導お願い致します。
if($asa_ch==1 and $asa_ch_ok ==1){
if($hiru_ch==1 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 1;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 2;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 3;
}
}elseif($hiru_ch==2 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 4;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 5;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 6;
}
}elseif($hiru_ch==3 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 7;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 8;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 9;
}
}elseif($asa_ch==2 and $asa_ch_ok ==1){
if($hiru_ch==1 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 10;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 11;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 12;
}
}elseif($hiru_ch==2 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 13;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 14;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 15;
}
}elseif($hiru_ch==3 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 16;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 17;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 18;
}
}elseif($asa_ch==3 and $asa_ch_ok ==1){
if($hiru_ch==1 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 19;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 20;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 21;
}
}elseif($hiru_ch==2 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 22;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 23;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 24;
}
}elseif($hiru_ch==3 and $hiru_ch_ok == 1){
if($yoru_ch ==1 and $hiru_ch_ok ==1){
$flag = 25;
}elseif($yoru_ch ==2 and $hiru_ch_ok ==1){
$flag = 26;
}elseif($yoru_ch ==3 and $hiru_ch_ok ==1){
$flag = 27;
}
}
}
No.2ベストアンサー
- 回答日時:
#1です。
if($asa_ch_ok == 1 and $hiru_ch_ok == 1){
if($asa_ch>=1 and $asa_ch<=3 and $hiru_ch >=1 and $hiru_ch<=3 and $yoru_ch>=1 and $yoru_ch<=3){
$flag = ($asa_ch - 1) * 9 + ($hiru_ch - 1) * 3 + $yoru_ch;
}
}
の方がいいかも…。
(インデントのために全角スペース使ってます。)
edomin2004様
ありがとうございます。
動作を確認し改めて感動しました。
ダラダラと長文になって困っていましたが、
本当にこんなに短くなってすっきりできて感動です。
ありがとうございました。
No.1
- 回答日時:
こういうことでしょうか?
if($asa_ch_ok == 1 and $hiru_ch_ok == 1){
$flag = ($asa_ch - 1) * 9 + ($hiru_ch - 1) * 3 + $yoru_ch;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- C言語・C++・C# 現在プログラムを作っているのですが、実行したときに写真のように結果が表示されるのですが、これを CH 2 2023/01/18 16:22
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- 大学受験 高校化学の有機分野です。 この構造式で表される立体異性体は3種類ですが この場合ってc=cに結合して 3 2022/09/28 11:14
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- 化学 応えを教えてください 1 2023/08/06 17:39
- YouTube YouTubeの映画解説ch等で出現する映画のワンシーンの映像は違法ですか? 3 2023/01/10 04:10
- Ruby power BI クエリエディター 〇〇を含む文字列置換 1 2022/10/16 17:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
細線化のプログラム
-
python についての質問です
-
ポインター引数の関数でコンパ...
-
UTF-8で5~6バイトになる文字コ...
-
COBOLのCOMP形式について
-
ビットスワップとバイトスワッ...
-
エクセルシート名の制限を変更...
-
number 改行が追加できない
-
char str[256]の256の意味は?
-
Excel VBA メール作成について ...
-
10Mバイトて文字数に すると何...
-
stable diffusionのエラー
-
バイナリとBCDコード
-
3バイト文字(UTF-8)をprintfで...
-
バイト列とバイナリ列の違いが...
-
pythonでDBのカラム名で取得し...
-
matlabのソースコードをpython...
-
varchar(M)のMは文字数ですかバ...
-
DataGridViewの特定列に入力さ...
-
0.5バイトづつ読み込みたいので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語でwin32apiを使ってnotepa...
-
デバイスコンテキストに書いた...
-
JavaScriptの条件分岐について(...
-
DOSのdirコマンドで思うように...
-
エラー「書き込み中にアクセス...
-
細線化のプログラム
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
Excel VBA メール作成について ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
stable diffusionのエラー
-
COBOLのCOMP形式について
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
バイナリとBCDコード
-
バイト列とバイナリ列の違いが...
-
ビットスワップとバイトスワッ...
-
ピクセル,dpiから容量(バイト...
おすすめ情報