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

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

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

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

4回答

781閲覧

nullやfalseの使い分け

con_con

総合スコア22

PHP

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

1クリップ

投稿2020/02/29 11:09

編集2020/02/29 11:10

PHPで値を受け取るとき以下のようにパターンがあると思いますが、どういう風に使い分けますか??

nullならこういうケースで便利、とか、falseだとこういうケースで使いにくい、など、実際のケースバイケースでよかったこと悪かったこと伺ってもよろしいでしょうか。

まったく素人でとりあえず全部falseにしてるので、おおざっぱでも使い分けることができればと思ってるのですが。

php

1$values = $_POST['values'] ? htmlspecialchars( $_POST['values '] ) : null; 2 3$values = $_POST['values'] ? htmlspecialchars( $_POST['values '] ) : false; 4 5$values = $_POST['values'] ? htmlspecialchars( $_POST['values '] ) : 'error';

直後は以下のようになりますが、これ以降の処理とかを考えれば使いにくいとか使いやすいとかありそうで、そのあたりがいまいちわからないです。

php

1if ( ! $values ) { 2 // null の場合 3} 4 5if ( ! $values ) { 6 // false の場合 7} 8 9if ( $values === 'error' ) { 10 // 'error' の場合 11}

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

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

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

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

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

guest

回答4

0

使いやすいよりも、
意味を重要視した方が良い気がします。
nullとfalseは意味が違うので、
コードを見て意味がわかるように、
作るのが大事です。

投稿2020/02/29 11:38

naoki5296

総合スコア15

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

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

con_con

2020/02/29 15:43

ありがとうございます。
guest

0

リクエストパラメータの話でしたらfilter_input()を使います。

余談ですがhtmlspecialchars()は取得時ではなく出力・表示時に使ってください。

投稿2020/02/29 11:14

m.ts10806

総合スコア80875

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

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

con_con

2020/02/29 15:43

そちらの関数は便利な予感がしますね!どうもありがとうございます。
m.ts10806

2020/02/29 20:15

便利というか、既にリクエストパラメータ取得する際は filter_input()を使うのがスタンダードです。 $_GETや$_POSTを直接参照することはしません。
guest

0

追記しておくと、
nullは通常初期化している状態をさすので、
使用する事がほぼないです。
==""の方がPHPでは使用します。
nullを使用していると、
sqlとかで問題は出た気がします。
逆にsqlの結果から出力されてバグの原因にもなります。
僕の経験や知識では、
他の言語でもバグの原因になりやすいです。
なのでnullは意味的にも使用的にもあまりお勧めしないし、使いません。

投稿2020/02/29 12:25

編集2020/03/01 00:11
naoki5296

総合スコア15

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

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

con_con

2020/02/29 15:44

初期化してないときはundefinedになるのでは?
naoki5296

2020/02/29 22:46

それはJavaScriptの場合ですね。 rubyはnillですが、 一般的な意味としてnullです。 c言語とかでもnullだったはずです。 rubyだと以下。 https://techacademy.jp/magazine/22199 『nilとは、「存在しない」という意味です。変数が初期化された時には、nilが割り当てられています。』
naoki5296

2020/02/29 22:47

すみません、初期化した値がnullですね。 間違えてました。 ありがとうございます。
m.ts10806

2020/03/01 00:00

回答も編集できるのでわざわざ新たに投稿する必要はありませんよ。
naoki5296

2020/03/01 00:26 編集

ありがとうございます。すみません。 今度からは追記の場合、新たに投稿せずに、 元の投稿を編集致します。 あ、追記は大丈夫なのかな。。 まぁ、編集機能使ってわかりやすくするように心がけますね。
guest

0

ベストアンサー

思ったことをつらつら書きます。他の方はわかりませんが…

まず、$_POST の内容が未設定の場合になにかを設定する局面において
個人的には null も false も 'error' も設定することはありません。

関数から null が返ってくるなら、その判定をするのは吝かではありませんが、
PHP で明示的に null を設定する処理は書かないかなあ。

とある状態を示す変数に対して true か false を設定することはあっても
論理値以外を想定した変数に false を入れるのは混乱しないかな?
もちろん、関数から(以下略

基本的に未入力がエラーになる仕様なら JavaScript で制御するし
もし PHP でやるなら、('error'とか設定せずに)とっとと
エラー処理にとばしちゃいます。
もちろん時と場合によりますけどね。

もし、未入力に対してデフォルト値を設定するならそれを設定するし
なんらかの処理が必要なら余計な手間をかけずにすぐに処理した
方が分かりやすい気がします。

投稿2020/02/29 11:37

takasima20

総合スコア7464

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

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

con_con

2020/02/29 15:41

>個人的には null も false も 'error' も設定することはありません。 質問の例ならどうしますか? >エラー処理にとばしちゃいます ということは下記みたいな感じでしょうか? $values = $_POST['values'] ? htmlspecialchars( $_POST['values '] ) : error(); function error(){ die(); // エラー処理というと例えば? }
takasima20

2020/03/01 10:55

必要に応じて、としか。(汗 コメントされたようにすることもありましょうし、以下のようにも if ($_POST['values']) { $values = htmlspecialchars( $_POST['values '] ) } else { //エラー処理。というか未設定時の処理って感じ? }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問