Help us understand the problem. What is going on with this article?

その判定本当に正しいですか?

More than 1 year has passed since last update.

はじめに

ある判定式を書いたときに「この判定方法正しいのかな?」と思いました。
知ったかぶって実装している訳ではなかったのですが、心なしか腑に落ちなかったので調査しました。
その調査をそのままアウトプットとして記載します。

前提

  • ?hoge=1というクエリパラメータが飛んできた場合

実装コード

sample.ctp
if (isset($this->request->query['hoge']) && $this->request->query['hoge'] === '1') {
    // ゴニョゴニョ
}

やりたいこと

hogeというクエリパラメータなのか、ということと、その値は1なのか、を判定したい。

目的

  • やりたいことを満たせているのか調査をする
  • 調査のノウハウを知識として蓄積する

調査方法

調査

スクリーンショット 2018-11-29 20.22.08.png

図はトリプルイコールで比較した場合の結果
PHP 型の比較表から引っ張ってきました。

スクリーンショット 2018-11-29 19.41.59.png

上記の表から今回実装したコードの結果の部分を引っ張ってきます。
期待値は文字列の1のみTRUEになって欲しいので、このようにしています。

結果を求めます。
IF関数を使用して求めます。参考→GoogleスプレッドシートのIF関数の使い方

IF(B37,IF(B38,"TRUE","FALSE"),"FALSE")

このような条件で、isset=TRUEかつ"1"=TRUEかどうかを判定します。

スクリーンショット 2018-11-29 19.57.52.png

結果はこのようになりました。
期待値通りになっている事がわかりました。

issetの役割としては、CakePHPのクックブックのクエリー文字列パラメーターにも書かれているように、

キーが存在しない場合、 null が返ります。

今回でいうhogeというkeyが存在しない場合の考慮をしてくれています。ありがとうisset

結果

今回でいう所の実装は正しかった。

まとめ

今回の調査で大事なのは、正しく実装できていたか、を知る事より、疑問に思った時に調査してすぐ解決できるノウハウを自分の知識として蓄積する事です。
PHPの型の比較表を暗記することではないのです。

調査をする、というアクションを取る上で、目的がしっかりしていれば、そのアクションは何倍にも効果的なアクションとする事ができます。

目的にも書きましたが、今回の調査でしっかり蓄積できたと思います。
しっかり今後に生かして圧倒的成長の源としたいと思います。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away