ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
作り方
// 添字配列(キーは 0 から自動採番)
$fruits = ['りんご', 'みかん', 'ぶどう'];
echo $fruits[0]; // りんご
// 連想配列
$user = [
'name' => '田中',
'age' => 30,
'admin' => false, // 末尾のカンマを残せる
];
echo $user['name']; // 田中
// 混在もできる(同じ型なので)
$mixed = [0 => 'a', 'key' => 'b', 5 => 'c'];
// 多次元
$rows = [
['id' => 1, 'name' => '田中'],
['id' => 2, 'name' => '鈴木'],
];
echo $rows[1]['name']; // 鈴木
$old = array('a', 'b'); // 古い書き方。動くが [] を使う
追加・更新・削除
$a = ['x'];
$a[] = 'y'; // 末尾に追加(最も速い)
$a[10] = 'z'; // キーを指定して追加
$a[] = 'w'; // 次は 11 になる(最大の数値キー + 1)
array_push($a, 'v', 'u'); // 複数まとめて
$a[0] = 'X'; // 更新
unset($a[0]); // 削除(キーは詰められない)
print_r(array_values($a)); // 詰め直したいときは array_values
$first = array_shift($a); // 先頭を取り出す(以降のキーが振り直される)
$last = array_pop($a); // 末尾を取り出す
array_unshift($a, 'head'); // 先頭に追加
unset() はキーを詰めません。[0 => 'a', 2 => 'c'] のような穴あきになるため、JSON にすると配列ではなくオブジェクトとして出力されます。連番であることが必要なら array_values() を通してください。
キーの型変換ルール
$a = [];
$a["1"] = 'a'; // int 1 になる
$a[1.9] = 'b'; // 切り捨てられて int 1 → 上書き
$a[true] = 'c'; // int 1 → 上書き
$a[null] = 'd'; // "" (空文字)
$a["01"] = 'e'; // "01" は数値扱いされない → 文字列キーのまま
var_dump($a);
// [1 => 'c', "" => 'd', "01" => 'e']
郵便番号や商品コードのように先頭が 0 の文字列はそのまま残りますが、"1" のような数値文字列は整数キーに変換されます。ID をキーにするときは、この違いで === の比較が食い違うことがあります。
ループ
foreach ($fruits as $fruit) {
echo $fruit;
}
foreach ($user as $key => $value) {
echo "{$key}: {$value}";
}
// 多次元は分割代入で受けられる
foreach ($rows as ['id' => $id, 'name' => $name]) {
echo "{$id}: {$name}";
}
// 値を書き換えたいときは参照。使い終わったら必ず unset
foreach ($fruits as &$f) { $f = "【{$f}】"; }
unset($f);
for ($i = 0, $n = count($fruits); $i < $n; $i++) {
echo $fruits[$i]; // 連番のときだけ使える
}
よく使う関数
| やりたいこと | 関数 |
|---|---|
| 件数を数える | count($a) |
| キーだけ / 値だけ取り出す | array_keys() / array_values() |
| 各要素を変換する | array_map() |
| 条件で絞り込む | array_filter() |
| 1 つの値にまとめる | array_reduce() / array_sum() |
| 含まれているか | in_array() / array_search() |
| キーがあるか | array_key_exists() / isset() |
| 並べ替え | sort() usort() ksort() asort() |
| 重複を除く | array_unique() |
| 結合する | array_merge() / [...$a, ...$b] |
| 一部を切り出す | array_slice() |
| 文字列にする / 分ける | implode() / explode() |
$nums = [1, 2, 3, 4, 5];
print_r(array_map(fn($n) => $n * 10, $nums)); // [10,20,30,40,50]
print_r(array_filter($nums, fn($n) => $n % 2 === 0)); // [1=>2, 3=>4] キーは保たれる
echo array_sum($nums); // 15
echo implode(', ', $nums); // 1, 2, 3, 4, 5
// 連想配列から特定の列だけ抜き出す
print_r(array_column($rows, 'name')); // ['田中','鈴木']
print_r(array_column($rows, 'name', 'id')); // [1=>'田中', 2=>'鈴木']
array_filter() はキーを保ちます。そのまま json_encode() すると配列ではなくオブジェクトになるため、必要なら array_values() を通します。
結合の 2 種類
$a = ['x' => 1, 'y' => 2];
$b = ['y' => 99, 'z' => 3];
print_r(array_merge($a, $b)); // ['x'=>1, 'y'=>99, 'z'=>3] 後ろが勝つ
print_r($a + $b); // ['x'=>1, 'y'=>2, 'z'=>3] 前が勝つ
// 数値キーの扱いが違う
print_r(array_merge([1, 2], [3])); // [1, 2, 3] 振り直される
print_r([1, 2] + [3, 4, 5]); // [1, 2, 5] キー 0,1 は前が勝つ
設定値に既定値を当てるときは $config + $defaults、リストを繋げるときは array_merge()、と覚えると迷いません。
比較・検索の落とし穴
$a = ['1', '2', '3'];
var_dump(in_array(1, $a)); // true ← 型を無視して比較している
var_dump(in_array(1, $a, true)); // false 厳密比較
var_dump(array_search('2', $a)); // int(1)
var_dump(array_search('x', $a)); // false
// 0 が返る場合と false が返る場合を == で区別できない
if (array_search('1', $a) !== false) { /* 見つかった */ }
// 配列同士の比較
var_dump([1,2] == [1,2]); // true 同じキーと値
var_dump([1,2] === [1,2]); // true 順序と型も同じ
var_dump(['a'=>1,'b'=>2] === ['b'=>2,'a'=>1]); // false 順序が違う
var_dump(['a'=>1,'b'=>2] == ['b'=>2,'a'=>1]); // true == なら順序を見ない
in_array() の第 3 引数は必ず true にするのが安全です。省略すると in_array(0, ['abc']) のような判定が PHP のバージョンによって変わります。
配列とオブジェクトの変換
$obj = (object)['name' => '田中']; // 配列 → stdClass
echo $obj->name;
$arr = (array)$obj; // オブジェクト → 配列
print_r($arr);
$json = json_encode($user, JSON_UNESCAPED_UNICODE);
$back = json_decode($json, true); // true で連想配列として受け取る
詳細は オブジェクトを配列に変換する方法 を参照してください。
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
コメントを削除してもよろしいでしょうか?