どう間違えているかわからないのでよろしくお願いいたします。 - PHPプロ!Q&A掲示板

4881

  • 募集中!! 0P

どう間違えているかわからないのでよろしくお願いいたします。

質問日時 / 2017年11月14日 11:57    回答数 / 1件

Questioner:  kanao  このエントリーをはてなブックマークに追加 

キーワード / switch    break    case   

  1. <?php
  2.  
  3.     $num = 7
  4.     $remainder = switch (7 % 3){
  5.     case 0:大吉です。
  6.     break;
  7.     case 1:中吉です。
  8.     break;
  9.     case 2:小吉です。
  10.     break
  11.     case default:凶です。
  12.     }
  13.  
  14.   ?>

上記では、何か間違ったところはありますでしょうか?たぶん2行目$remainderのあたりかなとは思うのですが、どう間違えているかよくわかりませんでした。


ツリー一覧

┗A01shimix最初の $num = 7 に文末のセミコロンがないのは何故で

回答一覧

並び替え:

A01
answerershimix [11月14日 13:37] (最終編集:11月14日 15:51)

最初の $num = 7 に文末のセミコロンがないのは何故でしょうか。同様のミスを以前も指摘したと思います。同じミスを繰り返すのはちょっと・・・

http://www.phppro.jp/qa/4878

以下、そこは修正したという前提で(汗



>たぶん2行目$remainderのあたりかなとは思うのですが、

というか「エラーメッセージを表示する」設定にしていれば(デバッグするならエラー表示は必須)

Parse error: syntax error, unexpected 'switch' (T_SWITCH)

になると思います。switchは構文です。$remainderに代入することは出来ません( = の右辺に書くことは出来ません)。なので unexpected 'switch' ということになります。そもそも(構文ですから)何の値も返しません。左辺に代入するものがないです。

書くとするなら
  1. <?php
  2. $num = 7;
  3. switch ($num % 3) {
  4. case 0:$remainder = '大吉です。';
  5.        break;
  6. case 1:$remainder = '中吉です。';
  7.        break;
  8. case 2:$remainder = '小吉です。';
  9.        break
  10. }
  11. echo $remainder;
  12. ?>
です。文字列リテラルはちゃんと引用符で括ること・・・って指摘しないといけないのはちょっとどうかと思いますが

剰余は 0, 1, 2 しかあり得ないのでdefaultは不要。またdefaultはcaseを前置しません。マニュアルで確認してください。

http://php.net/manual/ja/control-structures.switch.php

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)