PHPの論理演算子で複数の値と一致した場合にtrueを返す方法

このQ&Aのポイント
  • PHPの論理演算子を使用して、複数の値と一致した場合にtrueを返す方法について教えてください。
  • 具体的には、変数$sampleの値が01から30のいずれかと一致した場合にtrueを返したいです。
  • 現在は条件を || 演算子で繋げていますが、他にも効果的な方法があれば教えてください。
回答を見る
  • ベストアンサー

phpの論理演算子につきまして

はじめまして PHP初心者でございます。 複数の値と一つでも一致したら true を返したいのですが、、、 $sample の値が 01 または 02 ・・・・・30 のどれか一つと一致した場合 true とするばあい <?php if ($sample == 01 || 02 || 03 || 04 || ・・略・・|| 30) { echo "<p>条件に合っています。</p>"; } else { echo "<p>条件以外です。</p>"; } ?> このような演算子の表記でいいのでしょうか? 別にいい方法はございますでしょうか。 ご教授いただければ幸いです。

  • ya-ya-
  • お礼率42% (110/256)
  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

数字を01のように書くとバグの温床になりそうなので、 かりに文字列としてチェックすると if(in_array($sample,array('01','02','03','04', ・・略・・,'30')) { echo "<p>条件に合っています。</p>"; } else { echo "<p>条件以外です。</p>"; } となります。 もし$sampleが数値で、検査範囲が連番であればrange()など使えるかもしれません if(in_array($sample,range(1,30)){ echo "<p>条件に合っています。</p>"; } else { echo "<p>条件以外です。</p>"; }

ya-ya-
質問者

お礼

早々のご教授 ありがとうございます。 in_array関数を活用してみます。 ご指導ありがとうございました!!

その他の回答 (1)

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.2

良くないと思います。 それが動くphpがあるなら知りたいところですね(使いたいとは言わない)。 if ($sample=="01" or $sample=="02" or $sample=="03" or ‥‥ $sample=="30") と長~く並べるか、 比較対象の値を配列に格納し、in_array関数を使うのがよろしいでしょう。 http://www.php.net/manual/ja/function.in-array.php

ya-ya-
質問者

お礼

すいません。 No1の方のご教授で記述法が分かりました ありがとうございました。

ya-ya-
質問者

補足

早々のご教授ありがとうございます。 では、 <?php $code = array("01", "02", "03",・・・, "30"); if (in_array($sample, $code)) { echo "正しい"; } else { echo "間違い"; } ?> in_array関数 を使うと $sample, $codeが 比較一致した場合 True となると考えていいのでしょうか。 ご多忙のところ大変恐縮ですが 合わせてご教授賜りますようお願いいたします。

関連するQ&A

  • phpの論理演算の式で、 論理演算 <?php

    phpの論理演算の式で、 論理演算 <?php $x = 8; $y = 3; echo($x == 3 || $y == 3)."\n"; echo($y == 1 || $y == 1)."\n"; 出力されるのは 空と1です この空や1のような値で、真偽を表現(出力)する方法がブーリアン型と呼ばれますか? php プログラミング 

    • ベストアンサー
    • PHP
  • if文の中で否定演算子を使うことについて

    PHPの勉強をしています。 今、基礎的な内容の本とより実践的な内容の本、コードサンプルが満載の本の 計3冊で勉強しておるのですが、 たまたまなのかわかりませんが、この三冊の中ででてくるコードを見てみると、 if文の中に否定演算子、例えば IF(!A || !B) {   A、もしくはBがfalse だったのが反転してTrueになった場合の処理 }else {   A、Bどちらともtrueだったのが反転してfalseになった場合の処理 } といった条件文に否定演算子を含めたコードサンプルがほとんどです。 。。。。三冊ともこの調子なので もしかしてPHPのコーティング作法なのかな?と思いましたが ネットで検索してもそれらしい情報は見当たらず...... 自分が何がわからないのか それ自体よくわかってないのかもしれませんが IF文を使う際、条件に否定演算子を使うべきときってのがあるんだと思います。 となると、その時を判断する基準などがあるのでしょうか? 初心者なのでなにか重大な思い違いをしてるのではないかと思ってます。 なにか気づくことがあれば教えてください。

    • ベストアンサー
    • PHP
  • 「404判定のstrpos」の演算子が分からないの

    「404判定のstrpos」の演算子の意味が分からないので、教えてください。 ▽404 Not Found時の対処 | PHPのQ&amp;A【OKWave】   http://okwave.jp/qa/q4783971.html に掲載されていた下記を試したら、期待した動作になったのですが、 if (strpos($hdr[0],'404')!==false){  echo 'Not Found'; } else { しかし、 ▽PHP: strpos - Manual   http://php.net/manual/ja/function.strpos.php を参考に、「===演算子」へ変更したら、 if (strpos($hdr[0],'404')===false){  echo 'Not Found'; } else { 正常なURL(200)も、全てNot Foundになってしまいます。 ちなみに、 if (strpos($hdr[0],'404')==true){ だったら、期待通りの動作になりますが、 if (strpos($hdr[0],'404')===true){ だと、何が来ても同じ結果になります。 なんででしょうか? strpos関数の返り値を調べる際 ===演算子 を 利用しなくても良いのでしょうか?

    • ベストアンサー
    • PHP
  • html内にphpを混ぜる時

    <?php if(a > b){ echo "<p>hello!</p>"; }else{ echo "<p>see you!</p>"; } ?> こういう事ってよくあると思いますが、一々echoなどを使ってhtmlを吐き出させるのはあまりスマートに感じません。 他にやり方はあるのでしょうか?

    • ベストアンサー
    • PHP
  • PHP「FALSE」や「0」を使った条件文

    「if条件文」の()に「FALSE」や値「0」がはいると なにも考える事無く無条件に 「else」以降の条件が実行になるという決まりなのでしょうか? もしそうであれば条件分にする意味があるのでしょうか? 基本的な質問で申し訳ないのですが 実際に使われる分かりやすい簡単な例があれば ご紹介ください。 よろしくお願いいたします。 例1: if(FALSE){ echo "FALSEではない"; }else{ echo "FALSEです。"; } 例2: if(0){ echo "ゼロではない"; }else{ echo "ゼロです。"; } 例3:(特にこの例は何かおかしいような気がします) if(10-10){ echo "イフが実行"; }else{ echo "エルスが実行"; }

    • ベストアンサー
    • PHP
  • php と C# の ビット演算

    PHPでビット演算をしていますが、 PHPでたとえば、 c = a >> b でビット演算した値と、 C#で演算した値と aの値を大きくした場合、 4000000000以上? は結果が違ってきます。 C#とPHPではビット演算のアルゴリズムが違うのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP「中括弧内にPHP終了タグ」

    PHP参考書のサンプルプログラムに関しての質問です。 参考書は2013年のもので、プログラムの対応バージョンはPHP5.3、5.4、5.5と記載されています。 問題のプログラムはログインフォームのサンプルプログラムです。 <?php ~~略~~ if ($_SESSION['auth'] !== true) { ?> <!DOCTYPE html> <html lang="ja"> <head> ~~略~~ </head> <body> ~~略~~ </body> </html> <?php exit(); } という内容で、 if ($_SESSION['auth'] !== true) { ?> と{}内で一度PHP終了タグが入ることにとても違和感を感じ、色々調べているのですが、 この記述方法に関する情報が見つかりません。 サンプルプログラムは問題なく動作します。 HTMLの知識はあるのですが、現在PHPを勉強し始めたばかりです。 どなたか分かる方いますでしょうか よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのコードでこの2つは何が違うんでしょうか?

    phpのコードでこの2つは何が違うんでしょうか? 問題文が画像に書いてあるもので、上のコードは私が考えたもので、下のコードは画像の問題の答えです 私の解いた答え <?php $age = 10; if(10 <= $age < 20){ echo("10代"); }else if(20 <= $age < 30){ echo("20代"); }else if(30 <= $age < 40){ echo("30代"); }else{ echo("それ以外"); } 画像の問題文の正解 <?php $age = 43; if($age >= 10 && $age < 20){ echo("10代"); }else if($age >= 20 && $age < 30){ echo("20代"); }else if($age >= 30 && $age < 40){ echo("30代"); }else{ echo("それ以外"); }

    • ベストアンサー
    • PHP
  • XAMPを使っているのですが、論理演算子がうまく機能しません。

    XAMPを使って、PHPプログラムの練習をしています。 論理演算子を試しているですが、本に書いてあるような結果に なりません。phpバージョンはPHP 5.3.0です。 $f = true; $g = false; $h = $f and $g; $i = $g and $f; echo "result:".$h; $hも$gも同じように結果は空白になるはずなのですが、$hのほうは 1が返ってきます。なにが原因なのでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP、HTML、JavaScriptで

    初心者で数当てゲーム(プレイヤー2人が互いに4桁の秘密の数字を設定後、それを交互に当てあうというもの。数値とその位置が当たっていれば◎を~個、数値が合っていて位置が違えば○を~個、数値も違えば×を~個表示)を作成中なのですが、現在、◎、○、×の数をそれぞれ表示するところで止まっています。 とりあえず、前段階として◎の数だけを表示するようにプログラミングしようと思っています。 JavaScriptで、秘密の数字とプレイ画面で入力した数字の各桁の数字を照らし合わせ、一致した数だけ◎の個数を表示するためのプログラミング。 本分内のPHPで、if文を使って◎の個数を表示するプログラミングしています。 一応、JavaScript・PHPのプログラミングは下記のようにしています。 <script type="text/javascript"><!-- function check1(){ var countS1="<?php print addslashes($_SESSION['countS1']); ?>"; if(4桁すべてが等しい場合){ countS1=4; }else if(4桁の内3つの数字が等しい場合){ countS1=3; }else if(4桁の内2つの数字が等しい場合){ countS1=2; }else if(4桁の内1つの数字が等しい場合){ countS1=1; }else{ countS1=0; } } //--></script> <?php if($_SESSION['countS1']=4){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=3){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=2){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=1){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=0){ echo $_SESSION['countS1']; echo '個'; } ?> 例)秘密の数字:1234、プレイ画面の入力値:1268 →◎:2個 という様にしたいのですが、上のままだと入力してからsubmitボタンを押す前から「4個」と表示されてしまいます。 分かりにくくて申し訳ありませんが、よろしくお願いします。

専門家に質問してみよう