ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 と 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アノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?