• ベストアンサー

phpのSwitch文のswitchってそもそもど

phpのSwitch文のswitchってそもそもどういう意味なんでしょうか? ifはわかります もしもこういう場合は というので switchってなんですか?電源を押すみたいな意味ですか?

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

  • ベストアンサー
  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

他の言語だと「Select Case」と表現されることもあります。 aの値が1の場合の処理、2の場合の処理と言うように条件分岐という意味ではifとおなじですが、複雑なif文よりソースを読むのが楽です。 もちろん、if文が単純明快ならSwitchよりifを使った方が効率的です。 ifだとandやorを使って複数の条件を指定でき、場合によっては論理演算も絡ませたり出来ます。それはそれで便利なのですが、作成者以外の人が見た場合理解するまで時間がかかることもあったり、条件式を間違って理解することがあります。それはバグの元であり基幹業務システムで誤解したまま作り込むと致命的な障害にも繋がります。 ※致命的な例として、最近ニュースにもなった銀行の送金ができない事故とか・・・ だから、他人が見ても誤解せず短時間で理解しやすいコーディンゴを心がけるときにはCase文を使用することもあります。 で、SwitchはON/OFFの二種択一のスイッチと言うよりも、昔の白黒テレビのチャンネル切り替えスイッチのような感覚が近いのではないでしょうか? 回転式の切り替えスイッチだけでなく、ボタンが複数並んでいてONにのるのは一つだけという切り替えスイッチもあります。 最近は見る機会がずいぶん減りましたが、まだまだ使われているところはあります。

okwaveokw
質問者

お礼

ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • dell_OK
  • ベストアンサー率13% (742/5654)
回答No.3

古来からいろんな言語で使われている「switch」なので「そもそも」の意味はわかりませんが、私は何となく線路のスイッチを想像しています。 私はオンとオフの切り替えのような意味合いで使う変数もスイッチと呼んでいますが、複数の分岐があるような場合は、何となく線路です。 私が鉄道マニアだと言うわけではなく、ただ何となくです。 ウィキペディアによると「分岐器」として掲載されていて、英語では「railroad switch」と書かれているのですが、私にはこんなイメージです。 あるポイントから別々の方向へ行く、と言う意味ですかね。 https://ja.wikipedia.org/wiki/%E5%88%86%E5%B2%90%E5%99%A8

okwaveokw
質問者

お礼

ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。
  • GENESIS
  • ベストアンサー率42% (1111/2602)
回答No.2

switch 切り替えると言った意味合いで取れば良いと思います。 発生した値により処理を切り替えるために使います。 phpに限らずC言語でも使います(記述は若干違いますが)。if分を打列するよりはスマートな使い方となり、改修もしやすいです。

okwaveokw
質問者

お礼

ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpのswitch文について switchはif

    phpのswitch文について switchはifと違って、条件式の中がブール型の論理演算とかではないんですか? 完全に1つの値とかなんですかね? $num1>5とかそういうのは入らないんですか?

    • ベストアンサー
    • PHP
  • PHPのswitch文について

    こんにちは。 switch文を使って、 hogehoge.php?mode=admin や、 hogehoge.php?mode=admin&setting1 などのように、 hogehoge.phpの後に?○○=□□&△△のような好きな文字を入れたいのです。 あるPHPスクリプトを参考に、下のようにしてみたのですが、まったく動作しません。 switch ($_GET['mode']) { case "admin" : $inc_file = "./admin/"; break; } また、?mode=admin&setting1のように&を付ける方法がわかりません。 上のようにする場合は、どうすればよいでしょうか? よろしくおねがいします。 また、分からない部分があったら、補足要求お願いします。

    • ベストアンサー
    • PHP
  • phpのswitch文

    お世話になります。下記のようなフォームがあります。 <form method="post"><input type="submit" value="新規登録" name="registration"><form method="post"><input type="submit" value="一覧" name="list"></form> 新規登録と一覧、2つのボタンがあるのですが押されたボタンによって処理を区別したいです。 データを受け取るPHP内に下記のように記述したのですが思い通りの結果になりません。アドバイスを宜しくお願いします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <?php switch(ココの記述が判りません){ //新規登録画面を表示 case "registration": print "新規登録!"; break; //一覧を表示 case "'list', )": print "一覧表示"; break; default: print "ココがデフォルト表示"; } ?> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー if文だとif(isset($_POST["registration"])){の記述で分岐できたのですが、条件分岐が多いのでswitch文で書きたいです。 宜しくお願いします

    • ベストアンサー
    • PHP
  • phpのswitch文のcaseで

    phpのswitch文のcaseで switch ( $a ) case "1", "2", "a": のように、カンマで並べる事はできないのでしょうか?

    • ベストアンサー
    • PHP
  • phpのswitch文で、全ての条件に該当しない場

    phpのswitch文で、全ての条件に該当しない場合、elseのようにdefaultを使いますが この場合のdefaultはどういう意味なんでしょうか? defaultにそれ以外 という意味はないですよね?

    • ベストアンサー
    • PHP
  • PHPについて質問です。(switch文)

    PHPについて質問です。(switch文) 前のフォームのテキストフィールドから受け取った"fn"の値を使ってswhitch文で判定したいです。 <?php $a = $_POST['fn']; switch( $a ){ //←ここが予期せぬエラーとでました。 case 1: echo '$aは1です。'; break; case 2: echo '$aは2です。'; break; case 3: echo '$aは3です。'; break; default: echo '$aは1・2・3のいずれでもありません。'; } ?> どこらへんがいけないのですか?

    • ベストアンサー
    • PHP
  • switch文について

    下記のようなswitch文に もうひとつの変数 int tmp = Integer.valueOf(変数2).intValue();を代入したいのですが もう一つ代入できるのでしょうか?? 因みにswitch文にIF文を加えて変数を代入するのではなく switch文で複数の変数を使用したいのです。 どうぞよろしくお願いいたします。 なお、質問の意味が分からない、意図が伝わらない方は アドバイスはいりませんので 恐縮ですがアドバイスお願いいたします。 int lot = Integer.valueOf(変数1).intValue(); switch (lot) { case 1: out.print("OK"); break; case 2: out.print("NG"); break; default: out.print("エラー"); break;} }

    • ベストアンサー
    • Java
  • phpのifとswitchって似てますけど if

    phpのifとswitchって似てますけど ifはカッコの中に大なり小なりをいれますが switchは入れませんよね 似てるけどこういう所が違うんですかね? <?php if ($a > $b) { echo "aはbより大きい"; $b = $a; } ?>

    • ベストアンサー
    • PHP
  • jQuery 複雑なswitch文を作りたい

    jQueryの処理を高速にするため、スクリプトを現在、見直しています。 すみませんが、またまた質問させてください。 HTML側にふられている変数(var page;)の値を取得し その変数によって、bodyに別々のclassを追加したいと思っています。 HTMLは数ページあり、それぞれ異なる値です。 $(function(){ if(page.indexOf("あああ")!=-1){ $("body").addClass("aaa"); }else if(page.indexOf("かかか")!=-1){ $("body").addClass("kkk"); }else if(page.indexOf("さささ")!=-1){ $("body").addClass("sss"); } }); 上記のようにやっているのですが、 if文より、switch文でやったら早いかなぁと思いいろいろ試しています。 ですが、indexOfで取得しているように、var pageで取得したい文字は一部分なのです。 ↓こんな感じです。 var page = "あああいいい"; var page = "かかかききき"; var page = "さささししし"; なので、switch文のcaseに置く定数式に、ぴったり当てはまる文字列ではないのです。 以下の例は3つの条件ですが、 実際は10ページ近くあるので、それをすべてif文で書くのはスマートでない気がします。 そもそも、こういった場合はif文を使うしかないのでしょうか? switch文でなくても、他のやり方でも、 何か早く処理できる方法がありましたら教えてください。 宜しくお願いいたします。

    • ベストアンサー
    • AJAX
  • phpのswitch文で必ずdefault処理さる

    phpでswitch文を使って変数の値に応じて処理を変えたいのですが、なぜか常にdefault処理をされてしまいます。 htmlの別ファイルから例えば"テスト,テスト2,テスト3"という文字列を受け取って strtok()を使って、$aに"テスト", $bに"テスト2", $cに"テスト3"と入るようにしました。 それで$aには"テスト"の文字列が入っているはずなので、 switch($a){ case "テスト":~~/処理 break; default:~~//処理 break; } と書いた場合、case "テスト" の処理がされるはずだと思うのですが、 なぜかdefaultの場合の処理がされてしまいます。 gettype($a); で$aの型を調べると、string型になっていおり、 $aの中身を echo "a: {$a}"; で確認すると 「a: テスト」と表示されます。 しかし、if文で if($a == "テスト"){ echo "a match テスト"; } else{ echo "not match"; } のように書いてみると、 「not match」が表示されます。 この理由が分かりません。  この理由が分かる方はいらっしゃいますか? 解決策を教えてください。 また、もしかしたら$aにはecho や print()では表示されない文字が 付属しているのかもしれないと考えていますが、 echoやprint()で表示されない文字を表示させる方法はありますか?

    • ベストアンサー
    • PHP