Modifying Values by Key
CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 43/71。
インデックス配列の要素を位置で変更する方法を学んだように、連想配列の値をそのキーを使って更新できます。構文は同じです—既存のキーに新しい値を割り当てます。
<?php
$person = [
"name" => "Alice",
"age" => 25,
"city" => "Paris"
];
$person["age"] = 26;
$person["city"] = "London";
echo $person["age"]; // 26
echo $person["city"]; // London
?>既存のキーに値を割り当てると、PHPは単に古い値を新しいもので置き換えます。キー自体は変更されず、関連付けられた値のみが更新されます。
データが時間とともに変更する必要がある場合にこれは便利です。例えば、ユーザーのステータスを更新したり、製品の価格を変更したり、誤って入力された情報を修正したりする場合です。キーは安定した参照点として機能し、値は必要に応じて変更できます。
チャレンジ
簡単製品の情報を表す JSON オブジェクトを含む入力行を読み取ります(例: {"name": "Laptop", "price": 999, "stock": 50})。
次に、3 つの追加入力を読み取ります:
- 文字列
key1- 更新する最初のキー - 文字列
value1-key1の新しい値 - 文字列
key2- 更新する2番目のキー - 文字列
value2-key2の新しい値
JSON 入力から連想配列を作成し、次を行います:
key1に関連付けられた値をvalue1に更新しますkey2に関連付けられた値をvalue2に更新しますkey1の更新された値を印刷しますkey2の更新された値を印刷します
各結果を別々の行に印刷します。
例:
入力が {"name": "Laptop", "price": 999, "stock": 50}、price、1099、stock、45 の場合、出力は次のようになります:
1099
45入力が {"city": "Paris", "country": "France", "population": 2000000}、city、London、country、UK の場合、出力は次のようになります:
London
UKチートシート
連想配列の値を更新するには、既存のキーに新しい値を割り当てます:
<?php
$person = [
"name" => "Alice",
"age" => 25,
"city" => "Paris"
];
$person["age"] = 26;
$person["city"] = "London";
echo $person["age"]; // 26
echo $person["city"]; // London
?>既存のキーに値を割り当てると、PHPは古い値を新しいもので置き換えます。キーは変更されず、関連付けられた値のみが更新されます。
自分で試してみよう
<?php
// JSON入力を読み取る
$jsonInput = trim(fgets(STDIN));
// 更新するキーおよび値を読み取る
$key1 = trim(fgets(STDIN));
$value1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));
$value2 = trim(fgets(STDIN));
// JSONを連想配列に変換する
$product = (array)json_decode($jsonInput, true);
// TODO: 以下にコードを書く
// 1. key1に関連付けられた値をvalue1に更新する
// 2. key2に関連付けられた値をvalue2に更新する
// 3. 更新された値を印刷する
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic7Arrays Part 2 - Associative
Intro to Associative ArraysAccessing Values by KeyModifying Values by KeyAdding New Key-Value PairsCheck if Key ExistsRecap - Key-Value Data Store2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators