Laravelの「==」と「===」違い - Hashimoto-Noriaki/laravel-php-memo GitHub Wiki
投稿日 2023年04月17日
この記事の背景
ユーザーの編集画面を実装していた時にはまってしまいました。
public function edit($id)
{
if ($id === \Auth::id()) {
#省略
}
この時に条件式の違いを知りました。
===は「格納された値」と「データ型」までを含めた一致かどうかの判定を===は行う
みたいです。
実際に実装で使った例
if (\Auth::id() === $user->id) {
$user->delete();
}
の中で===を使っています。ChatGPIで調べたことですが、\Auth::id()で取得される値は整数であるため、==を使って比較してもいいみたいですが===を使った時、値と型の両方が一致する必要があるため、厳しめの比較になります。
例えば、'1' == 1はtrueですが、'1' === 1はfalseになります。
if (\Auth::id() == $user->id)に変更しても、比較結果は同じで削除ができる条件は変わりませんが、 値と型の両方を比較する\Auth::id() === $user->idの方が、より厳しめの条件で 削除を制限できます。