マイレベMENUサーバーサイドサーバーサイドに関する記事を投稿しています。基礎テストGoチュートリアル基礎フロントエンドVue.jsインフラAWSマイレベサーバーサイドサーバーサイドに関する記事を投稿しています。基礎テストGoチュートリアル基礎フロントエンドVue.jsインフラAWSサーバーサイドフロントエンドインフラマイレベサーバーサイドサーバーサイドに関する記事を投稿しています。目次キッカケPHPで空配列かどうかの判定をする際、empty()は避けるべきというツイートが流れてきました。「emptyは禁止」ぎゅうあ、empty()使ってましたぎゅうでもなぜダメなんだろう?具体的に学習してみようかちょうどempty()で判定をした処理を実装していたので、なぜemptyがダメなのか学習することにしました。empty()の特性を知るemptyの判定を下記の表いまとめてみました。false表で分かる通り、empty()はtrueに返すケースが多すぎます。意図しない動作が発生する可能性が高いです。empty()で判定をして[]が存在する想定だったが、実際にはNULLや未定義の変数かもしれません。なると、配列でしか使用できない関数や処理でエラーになる可能性があります。型定義をすれば、多少回避は可能?今回empty()は配列でないケースでもtrue判定をすることがわかりました。いえ、内容的にはempty()でtrueにしてもよさそうな気もします。そこで、じゃあシンプルにどうすれば回避できるのだろうか?と考えていきましょう。引数の型でarrayを指定すれば、判定を限定できるはずです。}サクッと例を書いてみました。bool引数の型にarrayを指定している場合は、empty()も空配列の判定に限定できます。falseしかしながら、仕様変更などでarrayではなく他のクラスを型指定するかもしれません。いった変更を考慮すると、この方法では保証しきれないとわかります。if($var)での判定を利用するしかないとわかります。issetは配列全般をtrueに判定してしまう。is_nullは配列全般をfalseに判定してしまう。if(!$var)を使用した判定の場合、is_array()を組み合わせて判定させます。!$var)ちょっとわかりづらいですよね。そこでもっとシンプルに判定をします。[]でシンプルに空配列の判定できます。これを理解すると、empty()は使わなくてよいと結論に達します。まとめempty()の判定はtrueが多く、意図しない処理をする可能性がある。[]で判定を完結できるので、こちらを利用しましょう。WEBエンジニア渋谷でWEBエンジニアとして働く。LaravelとVue.jsをよく取り扱い、誰でも仕様が伝わるコードを書くことを得意とする。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。(1)人気記事Vueでform送信前にデータを加工する方法Laravel8に静的解析であるLarastanを導入する方法2038年問題にLaravelで対応する方法。