ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
論理演算子とは
論理演算子は 真偽値(bool) どうしを組み合わせて新しい真偽値を作る演算子です。if 文や while 文の条件式で複数の条件を合成するときに使います。
PHP の論理演算子一覧
| 演算子 | 名前 | 意味 |
|---|---|---|
$a && $b | AND(記号版) | 両方が true のとき true |
$a || $b | OR(記号版) | どちらかが true のとき true |
!$a | NOT | true / false を反転 |
$a and $b | AND(単語版) | 両方が true のとき true |
$a or $b | OR(単語版) | どちらかが true のとき true |
$a xor $b | 排他的 OR | どちらか一方だけが true のとき true |
基本の真理値表
| A | B | A && B | A || B | A xor B | !A |
|---|---|---|---|---|---|
| true | true | true | true | false | false |
| true | false | false | true | true | false |
| false | true | false | true | true | true |
| false | false | false | false | false | true |
基本的な使用例
<?php
$age = 25;
$hasLicense = true;
// AND(両方とも成立)
if ($age >= 20 && $hasLicense) {
echo "運転 OK\n";
}
// OR(どちらかが成立)
if ($age < 18 || $age > 65) {
echo "割引対象\n";
}
// NOT(反転)
if (!$hasLicense) {
echo "免許が必要です\n";
}
// 複合
$isMember = false;
if (($age >= 20 && $hasLicense) || $isMember) {
echo "入場可\n";
}
短絡評価(Short-Circuit Evaluation)
PHP の && と || は 左辺だけで結果が決まるなら右辺を評価しない という性質を持ちます。これを利用して、null チェックと使用を 1 行で書けます。
<?php
// $user が null でないときだけ $user->name を参照
if ($user !== null && $user->name === 'Taro') {
echo "Hi, Taro!\n";
}
// $user が null だと右辺は評価されないので安全
// ※ 左右を入れ替えると null->name で警告 / エラー
// 「もし存在すれば呼び出す」イディオム
$callback && $callback(); // $callback が truthy なら実行
記号版と単語版の優先順位の違い
PHP では 記号版(&& ||)の方が単語版(and or)より優先順位が高い。代入演算子 = よりも、単語版は低く、記号版は高いのがポイントです。
<?php
// 記号版: && は = より優先順位が高い → 期待通り動く
$ok = $a && $b; // ($a && $b) を $ok に代入
// 単語版: and は = より優先順位が低い → 直感に反する
$ok = $a and $b; // ($ok = $a) のあとに and $b($b は捨てられる)
そのため 代入と一緒に使うときは必ず && / || を使うのが鉄則です。and / or はあえて優先順位を下げたいケース(早期 return との組み合わせなど)で使われる程度です。
真偽値として扱われる値(truthy / falsy)
PHP は弱い型付け言語のため、論理演算子に bool 以外の値を渡しても自動で真偽判定されます。falsy(偽として扱われる) な値は以下のとおりです。
| 値 | 判定 |
|---|---|
false | falsy |
null | falsy |
0 / 0.0 | falsy |
"0" | falsy(文字列「0」も偽になる) |
""(空文字) | falsy |
[](空配列) | falsy |
| それ以外(負数 / "false" 文字列 / オブジェクト等) | truthy |
とくに "0" が falsy になる挙動は他言語と異なるため要注意です。意図せず空判定で弾かれることがあります。
三項演算子と null 合体演算子(関連)
論理演算子と一緒に覚えると条件分岐が短く書けます。
<?php
// 三項演算子: 条件 ? 真の値 : 偽の値
$msg = $age >= 20 ? "大人" : "子ども";
// 短縮三項(PHP 5.3+): $a ?: $b → $a が truthy なら $a、そうでなければ $b
$name = $input ?: "ゲスト";
// null 合体(PHP 7+): $a ?? $b → $a が null(または未定義)なら $b
$name = $_GET["name"] ?? "ゲスト";
// null 合体代入(PHP 7.4+)
$config["timeout"] ??= 30; // 未設定ならデフォルトを入れる
「未定義変数 + 既定値」の組み合わせは ??、「空文字も含めて偽として扱いたい」のは ?:、「真偽そのものを取りたい」のは三項 ? : と使い分けます。
よくあるハマりどころ
| 症状 | 原因 / 対処 |
|---|---|
$x = $a or $b; が想定通り動かない | or は = より優先度が低い。$x = $a || $b; を使う |
"0" が if で偽になる | PHP の falsy ルール。厳密判定したいなら $x !== "" と書く |
| 右辺を評価したいのに評価されない | && / || は短絡評価。副作用が必要なら左右順序を入れ替えるか and / or |
| 複雑な条件で読みづらい | 変数に分けて命名する($canEnter = $age >= 20 && $hasLicense;) |
否定の二重否定 !!$value | truthy/falsy を bool 型に正規化するイディオム。(bool)$value と同義 |
関連
- 演算子 — 親カテゴリ
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?