採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

連想配列を編集する

テクノロジ系 / array-assoc (連想配列・foreach・ソート)

連想配列を編集する

Lesson 5 / Chapter 2

新しいキーは $arr['キー'] = 値 で追加できる

<?php
$person = ['name' => '太郎'];
$person['age'] = 20;

print_r($person);

実行結果:

Array
(
    [name] => 太郎
    [age] => 20
)
  • 存在しないキーに代入すると 新しい要素が増える
  • [] を空にすると 添字配列の追加 (L4) になるので注意

既存キーに代入すると 上書き

<?php
$person = [
    'name' => '太郎',
    'age'  => 20,
];

$person['age'] = 21; // 上書き

echo $person['age'] . "\n"; // 21
  • 同じキーに代入すると元の値は消える
  • 「追加」と「上書き」は構文が同じ → 既存キーかどうかで挙動が変わる

unset($arr['キー']) でキーごと削除

<?php
$person = [
    'name' => '太郎',
    'age'  => 20,
    'city' => '東京',
];

unset($person['age']);

print_r($person);

実行結果:

Array
(
    [name] => 太郎
    [city] => 東京
)
  • unset はキーと値をまとめて消す
  • 存在しないキーを unset してもエラーにはならない

「キーが存在するか」は isset で確認

<?php
$person = ['name' => '太郎'];

if (isset($person['age'])) {
    echo "age あり\n";
} else {
    echo "age なし\n";
}
  • 存在しないキーを $arr['key'] でいきなり読むと Warning
  • 先に isset でチェックするのが安全

このチャプターでできるようになること

$arr['key'] = 値 で追加できる

✅ 既存キーへの代入は上書きになると理解

unset でキーを削除できる

isset で「キーがあるか」を判定できる

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — 連想配列に新キーを追加

問題

以下の連想配列が与えられています。

$person = [
    'name' => '太郎',
    'age'  => 20,
];

ここに 'city' => '東京' を追加し、その後 name / age / city の順に値を 1 行ずつ出力してください。

期待される出力:

太郎
20
東京

採点

php scripts/grade.php topics/array-assoc/ch02-assoc-modify/drill/01-add/

ヒント

  • $person['city'] = '東京'; で追加できる
  • その後 3 回 echo するだけ

ドリル 02 — 既存キーの上書き

問題

以下の連想配列が与えられています。

$person = [
    'name' => '太郎',
    'age'  => 20,
];

age の値を 21 に書き換え、nameage をこの順で 1 行ずつ出力してください。

期待される出力:

太郎
21

採点

php scripts/grade.php topics/array-assoc/ch02-assoc-modify/drill/02-overwrite/

ヒント

  • 既存キーに代入すると上書きされる
  • $person['age'] = 21;