ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
結論: 安全な判定パターン
// ✅ 推奨1: 明示的に「null または空文字」
function isNullOrEmpty($x): bool {
return $x === null || $x === '';
}
// ✅ 推奨2: 未定義キー対応($_POST['name'] 等)
function isInputEmpty(array $data, string $key): bool {
return !isset($data[$key]) || $data[$key] === '';
}
// 使用例
$name = $_POST['name'] ?? null;
if (isNullOrEmpty($name)) {
echo '名前を入力してください';
}
各判定関数の比較
| 判定 | null | '' | '0' | 0 | false | [] | 未定義 |
|---|---|---|---|---|---|---|---|
empty($x) | true | true | true | true | true | true | true |
is_null($x) | true | false | false | false | false | false | 警告 |
isset($x) | false | true | true | true | true | true | false |
$x === null | true | false | false | false | false | false | 警告 |
$x === '' | false | true | false | false | false | false | 警告 |
strlen($x) === 0 | 警告 | true | false | false | true | エラー | 警告 |
empty() の落とし穴
「空チェックは empty で」と覚えると、数値 0 や文字列 "0" まで「空」扱いされる事故が起きます:
// ❌ よくあるバグ
$age = $_POST['age'] ?? null;
if (empty($age)) {
echo '年齢を入力してください';
// → 0 歳の赤ちゃんを登録できない!
}
// ❌ 同じく
$score = 0;
if (empty($score)) {
// → score = 0 が「入力されていない」扱い
}
// ✅ 修正: 厳密判定
if ($age === null || $age === '') {
echo '年齢を入力してください';
}
未定義キーへのアクセス(PHP 8.1+ 警告)
PHP 8.1 以降では strlen(null) 等で「Passing null to parameter of type string is deprecated」警告が出ます:
// ❌ PHP 8.1+ で警告
$name = null;
if (strlen($name) === 0) { ... }
// → Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated
// ✅ Null Coalescing で対処
if (strlen($name ?? '') === 0) { ... }
// ✅ または直接判定
if ($name === null || $name === '') { ... }
// 配列キー未定義の場合
$data = ['name' => 'taro'];
// ❌ Warning: Undefined array key "age"
if (empty($data['age'])) { ... }
// ✅ Null Coalescing
$age = $data['age'] ?? null;
if ($age === null || $age === '') { ... }
用途別の推奨判定
| 判定したいこと | 推奨 |
|---|---|
| フォームの未入力(数値 0 / "0" は有効) | $x === null || $x === '' |
| 配列に値が存在しないこと | !isset($arr['key']) |
| 変数が null か | $x === null |
| 空配列か | $x === [] or count($x) === 0 |
| 「ゆるく」空(0 / false / "" / [] 全部空扱い) | empty($x) |
| 空白だけの文字列も空扱い | trim($x ?? '') === '' |
「空白だけの文字列」も空扱いにする
function isBlank(?string $x): bool {
return $x === null || trim($x) === '';
}
// 全角スペース・タブも空扱いにする場合
function isBlankFullwidth(?string $x): bool {
if ($x === null) return true;
// 半角・全角スペース、タブ、改行を除去
$cleaned = preg_replace('/[\s\x{3000}]+/u', '', $x);
return $cleaned === '';
}
isBlank(' '); // true
isBlank("\n\t"); // true
isBlankFullwidth(' '); // true
Laravel での書き方
use Illuminate\Support\Str;
// blank() : null / '' / 空白文字列 / [] が true
if (blank($name)) {
return back()->withErrors('名前必須');
}
// filled() : blank の逆
if (filled($name)) {
// ...
}
// バリデーション (推奨)
$request->validate([
'name' => 'required|string|max:255', // null / '' / 未送信 をはじく
]);
FAQ
Q: $x == null と $x === null、どちらを使うべき?
A: 必ず ===(厳密比較)。== は 0 や "" も null と等価扱いされて事故ります。
Q: !$x ではダメ?
A: !0 も !"" も !null も全部 true なので、empty と同じ問題が起きます。明示的判定を推奨。
Q: ヌル合体演算子 ?? はどう使う?
A: 「null なら代替値」専用。$name = $input ?? 'デフォルト' のように。空文字 '' は通します。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?