ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
PHP 配列の基本
PHP の配列は順序付き連想配列。index 配列 (0, 1, 2, ...) も連想配列 (文字列キー) も同じ array 型で表現します。順序は挿入順が保たれます。
// 1. 短縮構文 (PHP 5.4+, 推奨)
$fruits = ['apple', 'banana', 'cherry'];
// 2. array() 構文 (旧来)
$fruits = array('apple', 'banana', 'cherry');
// 3. 連想配列
$user = [
'name' => '田中',
'age' => 28,
'email' => 'tanaka@example.com',
];
// 4. キーを明示した index 配列
$arr = [0 => 'a', 1 => 'b', 5 => 'f']; // 飛ばしてもOK
// 5. ネスト (多次元)
$grid = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
echo $grid[1][2]; // 6
要素の追加・更新・削除
$arr = [];
// 末尾追加
$arr[] = 'a'; // [0=>'a']
$arr[] = 'b'; // [0=>'a', 1=>'b']
array_push($arr, 'c', 'd');
// 先頭追加
array_unshift($arr, 'x'); // ['x', 'a', 'b', 'c', 'd']
// 末尾を取り出す (pop)
$last = array_pop($arr); // 'd' を取り出し、配列から除去
// 先頭を取り出す (shift)
$first = array_shift($arr); // 'x' を取り出し、配列から除去
// 連想配列の追加・更新
$user['name'] = '田中';
$user['age'] = 29; // 既存キーなら上書き
// 削除
unset($arr[1]); // index は再番号付けされない
unset($user['email']);
array_splice($arr, 1, 2); // index を詰めて削除
件数・有無の確認
$arr = ['a', 'b', 'c'];
count($arr); // 3
sizeof($arr); // 3 (count の別名)
// 空かどうか
empty($arr); // false
count($arr) === 0; // false
// 値の存在
in_array('b', $arr); // true
in_array('B', $arr, true); // false (型一致)
// キーの存在
array_key_exists('name', $user); // true
isset($user['name']); // true (ただし null 値だと false)
// 値→キー検索
$idx = array_search('b', $arr); // 1 (見つからない時は false)
キー・値の取得
$user = ['name' => '田中', 'age' => 28, 'email' => 't@example.com'];
array_keys($user); // ['name', 'age', 'email']
array_values($user); // ['田中', 28, 't@example.com']
// 特定の値を持つキーだけ
array_keys($user, 28); // ['age']
// 反転 (値とキーを入れ替え)
array_flip($user); // ['田中'=>'name', 28=>'age', ...]
結合・分割
array_merge と + 演算子の違いに注意:
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 3, 'c' => 4];
// array_merge: 右側が勝つ (上書き)
array_merge($a, $b); // ['a'=>1, 'b'=>3, 'c'=>4]
// + 演算子: 左側が勝つ (キー重複時)
$a + $b; // ['a'=>1, 'b'=>2, 'c'=>4]
// index 配列の場合
$x = [1, 2, 3];
$y = [4, 5, 6];
array_merge($x, $y); // [1, 2, 3, 4, 5, 6] ← 再番号付け
$x + $y; // [1, 2, 3] ← 0,1,2 重複で左を採用
// 分割 (chunk)
array_chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
// スライス
array_slice([1, 2, 3, 4, 5], 1, 3); // [2, 3, 4]
Spread / First-class Callable
// PHP 7.4+: Spread でマージ
$a = [1, 2];
$b = [3, 4];
$c = [...$a, ...$b, 5]; // [1, 2, 3, 4, 5]
// PHP 8.1+: 連想配列 spread
$x = ['a' => 1];
$y = ['b' => 2];
$z = [...$x, ...$y]; // ['a' => 1, 'b' => 2]
// 関数引数の spread
function sum(...$nums) {
return array_sum($nums);
}
sum(...[1, 2, 3]); // 6
// PHP 8.1+: First-class Callable
$strs = ['Hello', 'World'];
$upper = array_map(strtoupper(...), $strs); // ['HELLO', 'WORLD']
高階関数 (map / filter / reduce)
$nums = [1, 2, 3, 4, 5];
// map: 各要素を変換
$doubled = array_map(fn($n) => $n * 2, $nums); // [2, 4, 6, 8, 10]
// 複数配列同時 map
array_map(fn($a, $b) => $a + $b, [1, 2, 3], [10, 20, 30]); // [11, 22, 33]
// filter: 条件を満たす要素のみ
$even = array_filter($nums, fn($n) => $n % 2 === 0); // [1=>2, 3=>4] (key 維持)
// reduce: 畳み込み
$sum = array_reduce($nums, fn($carry, $n) => $carry + $n, 0); // 15
$product = array_reduce($nums, fn($c, $n) => $c * $n, 1); // 120
// 文字列の連結
$str = array_reduce(['a', 'b', 'c'], fn($c, $s) => $c . $s, ''); // "abc"
ソート
| 関数 | 方向 | キー | 用途 |
|---|---|---|---|
sort() | 昇順 (値) | 再番号付け | index 配列の値ソート |
rsort() | 降順 (値) | 再番号付け | index 配列の値ソート (逆) |
asort() | 昇順 (値) | 維持 | 連想配列を値でソート |
arsort() | 降順 (値) | 維持 | 連想配列を値でソート (逆) |
ksort() | 昇順 (キー) | 維持 | 連想配列をキーでソート |
krsort() | 降順 (キー) | 維持 | 連想配列をキーでソート (逆) |
usort() | カスタム | 再番号付け | 比較関数指定 |
uasort() | カスタム | 維持 | 連想配列をカスタムソート |
// オブジェクト配列を年齢順
$users = [
['name' => 'A', 'age' => 30],
['name' => 'B', 'age' => 25],
['name' => 'C', 'age' => 28],
];
usort($users, fn($a, $b) => $a['age'] <=> $b['age']);
// → B(25), C(28), A(30)
// 複数キーソート (年齢→名前)
usort($users, fn($a, $b) => $a['age'] <=> $b['age'] ?: $a['name'] <=> $b['name']);
ループ処理
$arr = ['apple' => 1, 'banana' => 2, 'cherry' => 3];
// foreach (推奨)
foreach ($arr as $value) {
echo $value;
}
foreach ($arr as $key => $value) {
echo "$key: $value\n";
}
// 参照渡しで書き換え
foreach ($arr as &$value) {
$value *= 10;
}
unset($value); // 参照を解除しないと後でバグの元
// while + each (PHP 7.2 で deprecated, 8.0 で削除)
// → foreach を使うこと
Laravel Collection
Laravel ではCollection クラスが用意されており、メソッドチェーンで書けます:
use Illuminate\Support\Collection;
$users = collect([
['name' => 'A', 'age' => 30, 'dept' => 'eng'],
['name' => 'B', 'age' => 25, 'dept' => 'sales'],
['name' => 'C', 'age' => 28, 'dept' => 'eng'],
]);
// チェーンで書ける
$result = $users
->filter(fn($u) => $u['age'] >= 28)
->sortBy('age')
->pluck('name')
->all();
// ['C', 'A']
// グループ集計
$users->groupBy('dept');
$users->sum('age');
$users->avg('age');
$users->max('age');
// Eloquent クエリも Collection
User::where('active', 1)->get()->map(fn($u) => $u->name);
FAQ
Q: array() と [] どちらを使うべき?
A: PHP 5.4 以降ならどちらでも動きますが、現代のコードは [] 一択です。短く読みやすい。
Q: 配列の要素が存在するかチェックする時 isset と array_key_exists どちら?
A: isset は値が null の時 false。null も「あり」扱いしたければ array_key_exists。性能は isset の方が速い。
Q: foreach の中で配列を変更すると?
A: foreach はループ開始時にコピーを取るので、ループ中の変更は安全。ただし参照渡し (&$v) を使うときはループ後に unset($v) 忘れずに。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 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
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 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
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?