質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

6回答

1558閲覧

PHPのif文について

MeB

総合スコア104

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/11/16 02:40

編集2017/11/16 02:46

php

1if ($test == a || b || c ) { 2 echo include(DROOT . '/.include/A.php'); 3} elseif ($test == d || e || f) { 4 echo include(DROOT . '/.include/B.php'); 5} else { 6 echo include(DROOT . '/.include/C.php'); 7}

上記のコードで$testに入ってきた文字列に対応して出すPHPファイルを出し分けをしたいのですが、
$testに何を入れてもA.phpが出てしまいます。

それとなぜが「1」がテキストとして出てしまうのですが、これはPHPファイルの中に潜んでいると言う認識でよろしいでしょうか…(1がどこにいるのか全然見つけられていない…)

ご教授のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

ベストアンサー

PHP

1if (in_array($test,["a","b","c"])){ 2 echo include(DROOT . '/.include/A.php'); 3}elseif (in_array($test,["d","e","f"])){ 4 echo include(DROOT . '/.include/B.php'); 5} else { 6 echo include(DROOT . '/.include/C.php'); 7}

投稿2017/11/16 02:52

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MeB

2017/11/16 02:59

できました!いつも勉強になります。 ありがとうございます!!!!
guest

0

PHP

1<?php 2$test = e; 3 4if ($test == 'a' || $test == 'b') { 5 echo 'A'; 6} elseif ($test == 'd' || $test == 'e') { 7 echo 'B'; 8} else { 9 echo 'C'; 10}

ご質問のサンプルを適当に簡略化しています。
IF文は上のようにORごとに比較しないとダメなんです。
in_arrayはもう他回答者の方が答えているので省略。

「1」の出所に関しては、もしかして、
include関数の戻り値とかでしょうか?

投稿2017/11/16 03:06

編集2017/11/16 03:16
LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP

1if ( in_array( $test, [ 'a', 'b', 'c' ], true ) ) { 2 // 3}

【PHP: in_array - Manual】
http://php.net/manual/ja/function.in-array.php

【PHPのin_arrayは罠が多いので注意喚起が必要 - Qiita】
https://qiita.com/tadsan/items/2a4c3e6b0b74a408c038

投稿2017/11/16 02:54

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MeB

2017/11/16 03:01

こんな罠が・・・ ありがとうございます!
guest

0

preg_match 関数を使ったプログラムも参考にしてください。

php

1if (preg_match('/(a|b|c)/', $test)) { 2 echo include(DROOT . '/.include/A.php'); 3} elseif (preg_match('/(d|e|f)/', $test)) { 4 echo include(DROOT . '/.include/B.php'); 5} else { 6 echo include(DROOT . '/.include/C.php'); 7}

どのプログラミング言語でも言えますが、if文を以下のように書けません。
if ($test == a || b || c ) {

投稿2017/11/16 11:44

naohiro19_

総合スコア178

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

このくらいの感じだとswitchの方が読みやすそう。

PHP

1 2switch($test){ 3 case 'a': 4 case 'b': 5 case 'c': 6 echo include(DROOT . '/.include/A.php'); 7 break; 8 case 'd': 9 case 'e': 10 case 'f': 11 echo include(DROOT . '/.include/B.php'); 12 break; 13 default: 14 echo include(DROOT . '/.include/C.php'); 15}

それとなぜが「1」がテキストとして出てしまうのですが

どこかに1って書いてあるんでしょうね。としか言えません。
ソースコードはincludeで呼び出されているファイルと呼び出しているファイルの全てをご提示ください。
どこで何が影響しているか分かりません。

<?php ~ ?>内ではなく、外のコードも全てです。

投稿2017/11/16 02:55

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とりあえず、

php

1if ($test == a || b || c )

ではなく

php

1if ($test == 'a' || 'b' || 'c' )

という感じで、対象となる文字列はシングルクォートで囲いましょう。

それとなぜが「1」がテキストとして出てしまう

上記の事象が良く理解できませんでしたが、A.phpに何らかの間違いがあるのでは?

投稿2017/11/16 02:46

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MeB

2017/11/16 02:49

対象となる文字列はシングルクォートで囲いましょう。やってみましたが変わりませんでした。 「1」は頑張って探します。
motuo

2017/11/16 02:50

では、$testにどの様な値が入っているのかvar_dump等で確認してみては?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問