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

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

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

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

Q&A

解決済

3回答

1042閲覧

PHP if文条件式内で変数宣言は一般的?

March03

総合スコア47

PHP

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

0グッド

2クリップ

投稿2022/08/28 04:48

前提

filter_input関数について調べていると馴染みのないif文を見かけました。
ネットで調べてもあまりこのような書き方について言及している記事を見つけられませんでした。

該当のソースコード

php

1if ( $username = filter_input( INPUT_POST, 'username' ) ) { 2 echo 'ユーザー名が入力されました。'; 3 echo $username; 4} 5else { 6 echo 'ユーザー名が入力されていません;'; 7}

疑問1

条件式で比較演算子「==」「===」を使うべきところ、
「=」にしちゃってたというミスはよくあると思いますが、
意図的に「=」を使うのは一般的な記法でしょうか?
(実務でこのようなコードを書くと、上記のようなミスを見分けられず不便そうに思いました。)

疑問2

このコードは以下と同等でしょうか?

php

1$username = filter_input( INPUT_POST, 'username' ); 2if ( $username ) { 3 echo 'ユーザー名が入力されました。'; 4 echo $username; 5} 6else { 7 echo 'ユーザー名が入力されていません。'; 8} 9

初歩的な質問かもしれませんがよろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

実務でこのようなコードを書くと、上記のようなミスを見分けられず不便そうに思いました。

そうですね、実務ではこのような書き方はNGとコーディング規約で制限することも多いかと思いますが、決して間違いではありません。

このコードは以下と同等でしょうか?

同等です

投稿2022/08/28 05:34

phper.k

総合スコア3923

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

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

March03

2022/08/28 10:49

ご回答ありがとうございます。 正しいコーディングですが、あまり使われない書き方ということですね。 勉強になりました。
guest

0

実務でこのようなコードを書くと、上記のようなミスを見分けられず不便そうに思いました。

こちらについては、if ( ($username = filter_input( INPUT_POST, 'username' )) !== FALSE )のように条件判定を追加することで、(比較演算子の結果を比較するようなことは通常行いませんので)代入を意図的に行っているとコードで表現できます。

投稿2022/08/28 05:57

maisumakun

総合スコア146618

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

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

March03

2022/08/28 10:51

ご回答ありがとうございます。 おっしゃるとおり、その記述でしたら意図的な代入だと伝わりますね。 色々な書き方があって面白いです。勉強になりました。
guest

0

[疑問1について]

条件式で比較演算子「==」「===」を使うべきところ、
「=」にしちゃってたというミスはよくあると思いますが、
意図的に「=」を使うのは一般的な記法でしょうか?
(実務でこのようなコードを書くと、上記のようなミスを見分けられず不便そうに思いました。)

意味が違いますよ。質問にあるコードでの "="は比較演算子としてのイコールではなく、代入演算子としてのイコールです。つまりif ( $username = filter_input( INPUT_POST, 'username' ) )の条件式中に出てくるイコールは「filter_input関数を引数IとしてINPUT_POSTやらなんやらを渡して呼び出し、その結果を$usernameという変数に入れろ」です。

[疑問2について]

このコードは以下と同等でしょうか
(コード)

YES.

投稿2022/08/28 05:50

BeatStar

総合スコア4962

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

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

March03

2022/08/28 10:55

ご回答ありがとうございます。 理解できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問