【PHPで===が動かない】型が違った時の比較演算子 文字列をintに変えるには?

今回はLaravelでif文を使っていた時に起きた事です。

本来欲しい値を変数に入れて、その値とDBに入っているint型の値がtrueかどうかを「===」で比較すると、うまくいかなかったんです。

というわけでこれを解決していきます。

==と===の違い

PHPマニュアル[https://www.php.net/manual/ja/language.operators.comparison.php]

PHPマニュアルを自分の中で理解するとこんな感じ。

==は値が同じだったらtrue
===は値と型の2つが同じだったらture

って書いてあります。

で、いろいろ調べていたら、「==より===を使った方が良い!」という記事が結構多い。

==の場合だと、型の相互変換を行っているので意図しない変換が起きる可能性があるらしい。

PHPで出来てしまうが控えたほうががいい書き方[https://qiita.com/shinkuFencer/items/48718f0c8d203ca513db#%E3%81%A7%E3%81%AE%E6%AF%94%E8%BC%83]

結局変数に入れていた値がstr型で、DBの値がint型だったから[===]を使うと、falseしか返ってこないわけです。

文字列からint型へ変換

今回は、変数に入れた文字列と、DBに入っているint型の値のtrue falseを知りたいので、型を揃える必要があります。

数値 = (int) 文字列;

例
$test = (int) "3";   //$testにはintの3が入力される。
Code language: PHP (php)

このような感じで変換を行うとうまいこといきます!

これで、変数と、DBの値の比較だー、、、、、

成功。

まとめ

==とか===ではなぜその比較演算子を使った理由など知らないといけないですね。

○○だからこうしました!という風に言えないといけないな。

ps.一日寝たらわからなかったところ解決できる問題は何か….

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA