ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
基本: foreach での走査
$user = [
'name' => 'Taro',
'age' => 30,
'email' => 'taro@example.com',
];
// キーと値を同時取得
foreach ($user as $key => $value) {
echo "$key: $value\n";
}
// name: Taro
// age: 30
// email: taro@example.com
// 値だけでよい
foreach ($user as $value) {
echo $value;
}
// 参照渡しで変更
foreach ($user as $key => &$value) {
$value = is_string($value) ? strtoupper($value) : $value;
}
unset($value); // ★ 参照解除を忘れずに
array_keys() / array_values()
$user = ['name' => 'Taro', 'age' => 30, 'role' => 'admin'];
// キーを配列で取得
$keys = array_keys($user);
// ['name', 'age', 'role']
// 値を配列で取得
$values = array_values($user);
// ['Taro', 30, 'admin']
// 特定の値に対応するキーを取得
$keys = array_keys($user, 'Taro'); // ['name']
$keys = array_keys($user, 30, true); // 厳密比較 ['age']
// 第三引数 true で型まで一致
array_keys(['0' => 'a', 0 => 'b'], 0); // [0]
array_keys(['0' => 'a', 0 => 'b'], '0', true); // ['0']
キー存在チェック
| キーの状態 | isset | array_key_exists | !empty |
|---|---|---|---|
| 未定義キー | false | false | false |
| 値 = null | false | true | false |
| 値 = '' (空文字) | true | true | false |
| 値 = 0 | true | true | false |
| 値 = '値' | true | true | true |
$arr = ['a' => 1, 'b' => null];
// null と未定義を区別したいときは array_key_exists
isset($arr['b']); // false (null だから)
array_key_exists('b', $arr); // true
// 短い記法 (Null Coalescing)
$value = $arr['c'] ?? 'default'; // 未定義 / null は 'default'
// ?? 演算子 (Laravel 等)
$role = $user['role'] ?? 'user';
array_combine / array_flip
// 2 つの配列から連想配列を構築
$keys = ['name', 'age', 'role'];
$values = ['Taro', 30, 'admin'];
$user = array_combine($keys, $values);
// ['name' => 'Taro', 'age' => 30, 'role' => 'admin']
// キーと値を入替
$user = ['a' => 1, 'b' => 2, 'c' => 3];
$flipped = array_flip($user);
// [1 => 'a', 2 => 'b', 3 => 'c']
// 値の重複があると後勝ち
$dup = ['a' => 1, 'b' => 1, 'c' => 2];
array_flip($dup); // [1 => 'b', 2 => 'c']
条件で抽出: array_filter / array_map
$users = [
'a' => ['name' => 'Taro', 'age' => 30],
'b' => ['name' => 'Hanako', 'age' => 25],
'c' => ['name' => 'Jiro', 'age' => 40],
];
// 値で絞り込み
$over30 = array_filter($users, fn($u) => $u['age'] >= 30);
// ['a' => [...], 'c' => [...]]
// キーで絞り込み (ARRAY_FILTER_USE_KEY)
$abOnly = array_filter($users, fn($k) => in_array($k, ['a', 'b']), ARRAY_FILTER_USE_KEY);
// キーと値両方使う
$picked = array_filter($users, fn($v, $k) => $k !== 'b' && $v['age'] > 20, ARRAY_FILTER_USE_BOTH);
// map: 名前だけ取り出す
$names = array_map(fn($u) => $u['name'], $users);
// ['a' => 'Taro', 'b' => 'Hanako', 'c' => 'Jiro']
// PHP 8.1 First-class Callable Syntax
$ids = array_map(strtoupper(...), ['a', 'b', 'c']);
連想配列を JSON に
$user = ['name' => 'Taro', 'age' => 30];
// JSON 化 (UTF-8 / pretty)
$json = json_encode($user, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
// {
// "name": "Taro",
// "age": 30
// }
// JSON → 連想配列 (第二引数 true)
$arr = json_decode('{"name":"Taro","age":30}', true);
echo $arr['name']; // Taro
// false なら object に
$obj = json_decode('{"name":"Taro"}');
echo $obj->name; // Taro
Java / JS Map との比較
| 操作 | PHP 連想配列 | Java HashMap | JS Map |
|---|---|---|---|
| 取得 | $a['k'] | m.get("k") | m.get("k") |
| キー一覧 | array_keys() | m.keySet() | [...m.keys()] |
| 値一覧 | array_values() | m.values() | [...m.values()] |
| 存在確認 | array_key_exists() | m.containsKey() | m.has() |
| ループ | foreach ($m as $k => $v) | m.forEach((k,v) -> ...) | for (const [k,v] of m) |
Laravel Collection との連携
use Illuminate\Support\Collection;
$users = collect([
['name' => 'Taro', 'age' => 30],
['name' => 'Hanako', 'age' => 25],
]);
$users->pluck('name'); // Collection['Taro', 'Hanako']
$users->pluck('age', 'name'); // ['Taro' => 30, 'Hanako' => 25]
$users->keys();
$users->values();
$users->filter(fn($u) => $u['age'] >= 30);
$users->toArray();
FAQ
Q: 配列のキーが数値と文字列が混在しても OK?
A: OK。['a' => 1, 0 => 'x', 'b' => 2] のような構造も許容されますが、数値文字列 '0' は int 0 に変換される点に注意。
Q: 連想配列の順序は保たれる?
A: PHP は挿入順を保つのが言語仕様(C 実装の hash + linked list)。Java HashMap と違って順序が安定です。
Q: 巨大な連想配列の検索は遅い?
A: PHP の配列はハッシュテーブルなので isset($arr[$key]) は平均 O(1)。in_array() は O(n) なので注意。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
コメントを削除してもよろしいでしょうか?