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Потренируйтесь самостоятельно: Онлайн-компилятор PHP