#16 PHPで学ぶ辞書型(マップ)の基本
PHPで名前と値の組み合わせを扱う仕組みは、以前の記事で触れた「連想配列」です。この記事では、PHPにおける辞書に相当する使い方を、改めて詳しく解説します。
連想配列を作ってみる
$scores = ["太郎" => 90, "次郎" => 85];
キーには文字列だけでなく整数も使えますが、キーが数値の場合は通常のリスト(添字配列)との違いが分かりにくくなるため、辞書として使う場合は文字列のキーを使うのが基本です。
値を取り出す・追加する
echo $scores["太郎"];
$scores["三郎"] = 78;
既に存在するキーに代入すると値が上書きされ、存在しないキーに代入すると新しい要素として追加されます。
キーが存在するか確認する
if (array_key_exists("三郎", $scores)) {
echo $scores["三郎"];
}
似た関数に`isset()`がありますが、値が`null`の場合の挙動が異なります。`isset()`は値が`null`だとキーがあっても`false`を返しますが、`array_key_exists()`はキーの有無だけを厳密に判定します。この違いを知らずに`isset()`を使うと、値がnullの要素を「存在しない」と誤判定してしまうことがあるため注意しましょう。
キーを削除する
unset($scores["三郎"]);
全てのキーと値を順に処理する
foreach ($scores as $name => $score) {
echo "{$name}: {$score}";
}
キーだけ、または値だけが欲しい場合は`array_keys()`・`array_values()`を使うと、それぞれの一覧を配列として取得できます。
PHPならではの注意点
PHPの配列は、以前の記事で触れた通り、単純なリストと連想配列を同じ`array`という型で扱います。今使っている配列がどちらの用途なのかを意識しながらコードを読み書きすることが、PHPのコードを理解する上で重要です。また、`array_key_exists()`と`isset()`の違いのように、一見似た機能を持つ関数がいくつも存在するのもPHPの特徴です。関数のリファレンスを確認する習慣をつけておくと、思わぬ挙動の違いに悩まされにくくなります。
連想配列を結合する
2つの連想配列をまとめたい場合は`array_merge`を使います。同じキーが両方に存在する場合は、後から渡した配列の値で上書きされます。
$defaults = ["色" => "赤", "サイズ" => "M"];
$options = ["サイズ" => "L"];
$merged = array_merge($defaults, $options);
まとめ
PHPの辞書は連想配列として扱い、`array_key_exists`で安全にキーを確認できます。`unset`での削除、`array_keys`/`array_values`での一覧取得、`array_merge`での結合、単純な配列との使い分けを意識しましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
PHPをもっと学びたい方には「10日でおぼえるPHP入門教室 第4版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿