このようなif文の条件で
php
1if($value == 'a' || $value == 'b' || $value == 'c' || $value == 'd' || $value == 'e' || $value == 'f')
変数$valueは同じなので何回も||(または)を使うのはおっくうなのですがどうにかして省略できる方法はありますでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/24 23:32
2019/12/01 05:54
2019/12/01 06:18
回答7件
0
ベストアンサー
PHP
1if ( in_array( $value, [ 'a', 'b', 'c', 'd', 'e', 'f' ], true ) )
【PHP: in_array - Manual】
https://www.php.net/manual/ja/function.in-array.php
【in_arrayを使うときは黙って第三引数を付けること - Qiita】
https://qiita.com/ritukiii/items/3a6add378ae089ab5d70
投稿2019/11/23 15:26
総合スコア69596
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
key をチェックするっていうのもよくやる手です。
*まぁ、面倒くささは変わらんw
php
1<?php 2$arr = [ 3 'a' => TRUE, 4 'b' => TRUE, 5 'c' => TRUE, 6 'd' => TRUE, 7 'e' => TRUE, 8 'f' => TRUE, 9 'abc' => TRUE, 10]; 11foreach(['a', 'g', 'abc'] as $value){ 12 echo $value . ' をテスト'; 13 if(isset($arr[$value]))echo ' : あたり'; 14 if(array_key_exists($value, $arr))echo ' : あたり'; 15 echo PHP_EOL; 16}
ちなみに、array_key_exists() は早い!
雑な検証
この処理でパフォーマンス求めることって殆どないと思うけど参考まで。
投稿2019/11/24 00:51
編集2019/11/24 03:18退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
単一条件ならいっそswitch
php
1switch($value){ 2 case 'a': 3 case 'b': 4 case 'c': 5 case 'd': 6 case 'e': 7 case 'f': 8 9 break; 10 default: 11 12} 13 14 15
投稿2019/11/23 22:47
編集2019/11/23 22:48総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
大喜利用
php
1<?php 2foreach(['a', 'f', 'g', 'abc'] as $value){ 3 echo $value . ' をテスト'; 4 $test = "a"; 5 while($test !== "g"){ 6 if($value === $test)echo ' : あたり'; 7 $test++; 8 } 9 echo PHP_EOL; 10}
入力に一文字限定
php
1foreach(['a', 'f', 'g', 'abc'] as $value){ 2 echo $value . ' をテスト'; 3 if(floor((ord($value)-97)/6)===0.0)echo ' : あたり'; 4 echo PHP_EOL; 5}
投稿2019/11/24 04:45
編集2019/11/24 05:54退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私は、短くて、見やすくて、修正のしやすいコードが好きです。
なので、私ならこのあたりです。
php
1if (preg_match('/^[a-f]$/', $value)) // 連続した文字限定 2if (strpos(' abcdef', $value))
※$valueに入る値は空白以外の1文字であることを前提にしています
投稿2019/11/23 19:49
編集2019/11/24 07:12総合スコア902
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/23 23:06
2019/11/23 23:19 編集
2019/11/24 02:36
2019/11/24 05:48
2019/11/24 05:52
2019/11/24 06:28
2019/11/24 06:35
2019/11/24 06:47
退会済みユーザー
2019/11/24 06:51
2019/11/24 06:59
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。