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

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

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

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

Q&A

解決済

1回答

668閲覧

PHPのif文がおかしい

poteto

総合スコア142

PHP

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

0グッド

0クリップ

投稿2014/02/02 02:31

若干実際のソースから書き換えていますが、下記のようなロジックを組んでいるのですが、2行目のechoでの出力はしっかり"animal"や"anime"等の選択した値が送信出来ているのですが、全て"未選択"と出力されてしまいます。
本来なら、"animal"なら"動物"、"anime"ならアニメと出力させたいです。
最初の$post == 0 を外すことで正常に処理はするのですが、納得出来ません。
理由を教えて下さい

`

<?php $post = "実際はPOSTした値"; echo $post; if ($post == 0) { echo "未選択" } elseif ($post == "animal") { echo "動物"; } elseif ($post == "anime" ){ echo "アニメ"; } elseif ($post == "tv") { echo "テレビ"; } ?>

`

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

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

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

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

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

guest

回答1

0

ベストアンサー

この問題は、PHPの自動型変換によって発生します。
まずHTMLでPOSTした値は全てStringと文字列で送信されます。
例えば数字のみのデータだとしても文字列として送信されますので、注意してください。
仮にis_int()等で数字チェックを行ったりしても正常に動作しません。

よってif文の中の0がダブルクォーテーションで囲っていない為、
if ( 文字列 == 数値 )
と言う条件文になり、PHPが勝手に文字列を強制的に数値に変換した結果、0 と言う数値となり、条件文の結果がTRUEとなってしまいます。
対処方法としては、===とイコール3つの演算子を利用するか、0の値をダブルクォーテーションで囲ってください。

投稿2014/03/18 00:41

jackall

総合スコア98

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問