HOME > PHP > 送られてきたデータのチェック方法(issetとemptyの違い)
 
送られてきたデータのチェック方法(issetとemptyの違い)

送られてきたデータのチェック方法(issetとemptyの違い)

PHP
  • 2018.06.28
  • しらす
  • しらす

こんにちは、しらすです。

ワールドカップ盛り上がってますね!
社内でもお昼の休憩スペースでは毎日サッカーの話題になってます!今日のポーランド戦も勝ち点を増やして決勝トーナメントに進んでほしいですね!

さて記念すべき1回目の技術系記事ですが今回は「送られてきたデータのチェック方法」というテーマで書いていきます。堅そうなタイトルですが、できるかぎり、できるかぎり、分かりやすくお伝えできればと思います!

 

チェックの方法 issetと!empty

データの中身が正しいか調べる方法を探していると、issetと!emptyの二つが方法として出てきました。以下PHPの関数リファレンスに記載されている二つの項目の説明です。
issetの説明は「変数がセットされていること、そして NULL でないことを検査する」
emptyの説明が「変数が空であるかどうかを検査する」

はじめにこの説明を見た時に、二つの違いがはっきりわかりませんでした。「セットされているか」「空かどうか」の違いってなんだろう、という疑問が残ったので実際にプログラムを書いて調べてみることにしました。

 

実際に動かしてみる!

今回は以下のような野球のダミーデータで調べていきます!

 

選手名に名前が入り、打率、HR、打点の各項目に数値が入っているデータになります。

 

検証1

それでは先のデータをチェックします。

チェックをするプログラムは以下のものです。
データの中を一つずつチェックして、データがあればTRUEを、なければFALSEを出力します。

結果はこちらです。

結果1

すべての項目にデータが入っているので両方ともOKですね

 

検証2

次はこのデータをチェックしてみようと思います。

 

選手名は入っていますが、打率、HR、打点がnull(存在しないという意味)のデータです。
nullに対して差が出るか調べてみます。

結果

結果2

選手名はTRUEですがnullの項目は二つともFALSEが出ましたね。
nullに違いはなかったです。

検証3

さて、では最後にこのデータをチェックしてみます。

先ほどのデータと違うのはHRの数が0な点ですね。

それではチェックしてみます。

結果

結果3

HRの項目でissetはTRUE、!emptyはFALSEが出ました。

HRが0本であることはエラーではないので、この処理はissetが正しい結果を返しています。

ここがissetとemptyの違いの一つで、issetは0を0と認識するのに対し、emptyは0を何もない状態→存在がないと認識する点です。今回のような0に意味があるデータをチェックする際はissetを使うべきですね。

 

まとめ

0に意味があるデータを見るときはissetでチェック!
逆に0が存在してはいけないデータを扱うときはemptyの方が良さそう!

細かい違いかもしれませんが、解釈を間違えたまま進めてしまうと大きなエラーの引き金になってしまうこともあるの、使い方が似ている関数に出会った時はそれぞれの違いをしっかり把握して、正しい使い方をしていきたいです。

今回はここまでになります!
最後まで読んでいただきありがとうございました。


PAGE TOP ▲