bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. PHP/Laravel で値の状態を判定するヘルパ関数まとめ

PHP/Laravel で値の状態を判定するヘルパ関数まとめ

Mar 30, 2026 Laravel , PHP bucket-sort

PHP や Laravel で開発していると、「この値は空か?」「null か?」「入力があるか?」を判定する場面が頻繁に出てきます。PHP ネイティブの関数と Laravel のヘルパが混在しているため、何を使えばいいか迷いやすいところです。この記事では、よく使うものをまとめて整理します。

filled / blank(Laravel ヘルパ)

Laravel が提供する最も基本的な入力値チェックの関数ペアです。

filled($value) // 空じゃない
blank($value)  // 空である

filled() は null・空文字列・空配列などをすべて「空」と見なして false を返します。blank() はその逆です。Laravel のフォーム入力や変数の有無チェックには、まずこちらを使うのがおすすめです。

is_null / isset(PHP ネイティブ)

PHP 組み込みの判定手段です。どちらも「null かどうか」に絞った判定をします。

is_null($value) // null なら true
isset($value)   // null でないなら true(変数未定義も false)

filled() との違いは、空文字列の扱いです。

関数 ''(空文字)のとき
is_null false(null ではない)
isset true(null ではない)
filled false(空とみなす)

空文字列を「値がある」と見なしたいかどうかで使い分けることになります。

empty(PHP ネイティブ・要注意)

empty() は「空っぽに見えるもの全部」を true にします。

empty($value)

false になる(= 空とみなされる)値:

  • ''(空文字)
  • null
  • 0
  • '0' ← ここが落とし穴
  • [](空配列)

0 や '0' が空扱いになる挙動は、数値や ID を扱うときにバグの原因になりやすいです。Laravel では基本的に filled() / blank() を使い、empty() は避けるのが無難です。

配列・コレクションの空チェック

配列そのものの空チェックには count() も使えますが、Laravel の Collection を扱うときは専用のメソッドが自然です。

// 配列
count($array) > 0

// Collection
$collection->isEmpty()
$collection->isNotEmpty()

Collection を使っているなら isEmpty() / isNotEmpty() の方が読みやすく、メソッドチェーンとも相性が良いです。

リクエストの判定メソッド(重要)

コントローラーでリクエストを扱う際は、専用のメソッドが揃っています。それぞれ微妙に意味が違うので注意が必要です。

$request->has('name')     // キーが存在するか(値が空文字でも true)
$request->filled('name')  // 値が空でないか
$request->missing('name') // キーが存在しないか

フォームの送信値を使うかどうかの判定には filled() が適しています。has() はキーの存在確認なので、値が '' でも true になります。

条件分岐を書くとき、クロージャーを使った whenFilled() を使うと少しすっきりします。

$request->whenFilled('name', function ($value) {
    // 値があるときだけ実行
});

optional / data_get(null 安全なアクセス)

値の有無ではなく、null でもエラーにせずアクセスしたい場面での定番パターンです。

optional($user)->name   // $user が null でもエラーにならない

data_get($array, 'user.name')  // ネストしたキーを安全に取得

data_get() はドット記法でネストを表現できるため、多次元配列や設定値の取得でよく使われます。同様のキー存在チェックには Arr::has() があります。

Arr::has($array, 'user.name')

実務での使い分け

これだけ関数が揃っていると迷いますが、場面ごとに絞り込むと判断しやすくなります。

場面 使うもの
フォーム入力の有無 filled() / blank()
リクエスト処理 $request->filled()
配列・Collection の空チェック isEmpty() / isNotEmpty()
null かどうかだけ判定したい is_null()
null でもエラーにせずアクセス optional()
ネストしたデータの取得 data_get()

empty() が上の表に入っていないのは意図的です。Laravel で書くなら、基本的に empty() の出番はほぼありません。「empty を使わず filled / blank を使う」が Laravel 的な考え方です。

Laravel PHP
← Filament の dehydrated メソッドとは何か Pub/Sub パターンとは何か →

Related Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026
  • Laravelのレート制限(throttle:5,1)とは何か Mar 27, 2026
  • Livewireのファイルアップロード一時ファイルは誰が掃除しているのか Mar 14, 2026

Table of Contents

  • filled / blank(Laravel ヘルパ)
  • is_null / isset(PHP ネイティブ)
  • empty(PHP ネイティブ・要注意)
  • 配列・コレクションの空チェック
  • リクエストの判定メソッド(重要)
  • optional / data_get(null 安全なアクセス)
  • 実務での使い分け

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.