Modifying Values by Key
Часть раздела Основы путешествия по PHP на Coddy — урок 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}).
Затем прочитайте еще четыре входных значения:
- Строка
key1— первый ключ для обновления - Строка
value1— новое значение дляkey1 - Строка
key2— второй ключ для обновления - Строка
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
// Прочитать входные данные 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 Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators