Accessing Values by Key
Часть раздела Основы путешествия по PHP на Coddy — урок 42 из 71.
Теперь, когда вы понимаете, что такое ассоциативные массивы, давайте узнаем, как извлекать из них значения. Так же, как индексированные массивы используют числовые позиции, ассоциативные массивы используют ключи внутри квадратных скобок.
<?php
$person = [
"name" => "Alice",
"age" => 25,
"city" => "Paris"
];
echo $person["name"]; // Alice
echo $person["age"]; // 25
?>Синтаксис следующий: $array["key"] — поместите ключ в виде строки внутри скобок, и PHP вернет соответствующее значение. Это гораздо более читабельно, чем помнить, что имя находится под индексом 0.
Вы также можете сохранить полученное значение в переменной для последующего использования:
<?php
$product = [
"title" => "Laptop",
"price" => 999
];
$itemName = $product["title"];
echo $itemName; // Laptop
?>Ключ должен совпадать в точности — включая регистр. Использование "Name" вместо "name" приведет к ошибке, так как PHP рассматривает их как разные ключи.
Иногда данные поступают в виде JSON-строки, а не в виде литерала массива PHP. JSON (JavaScript Object Notation) — это распространенный текстовый формат для представления структурированных данных. Например:
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';Встроенная функция PHP json_decode() преобразует строку JSON в значение PHP. Чтобы получить ассоциативный массив, передайте true в качестве второго аргумента:
<?php
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';
$book = json_decode($json, true);
echo $book["title"]; // Dune
echo $book["author"]; // Frank Herbert
echo $book["year"]; // 1965
?>После вызова json_decode($json, true), результатом будет обычный ассоциативный массив, и вы можете обращаться к его значениям точно так же, как и в любом другом ассоциативном массиве — используя $array["key"].
Задание
ЛегкоПрочитайте строку ввода, содержащую объект JSON, представляющий информацию о книге (например, {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}).
Затем прочитайте еще два входных значения:
- Строку
key1, представляющую первый ключ для доступа - Строку
key2, представляющую второй ключ для доступа
Чтобы преобразовать строку JSON в ассоциативный массив, используйте встроенную функцию json_decode() с true в качестве второго аргумента:
$array = json_decode($jsonString, true);
Второй аргумент true указывает PHP возвращать ассоциативный массив вместо объекта. После декодирования вы можете обращаться к значениям по ключу, как в любом ассоциативном массиве, например $array["title"].
Создайте ассоциативный массив из входных данных JSON, затем:
- Получите и выведите значение, связанное с
key1 - Сохраните значение, связанное с
key2, в переменной с именем$info - Выведите значение, хранящееся в
$info
Выводите каждый результат на отдельной строке.
Пример:
Если входные данные — {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}, title и author, вывод должен быть следующим:
The Great Gatsby
F. Scott FitzgeraldЕсли входные данные — {"name": "Laptop", "brand": "TechCo", "price": 999}, brand и price, вывод должен быть следующим:
TechCo
999Попробуйте сами
<?php
// Чтение входных данных JSON
$jsonInput = trim(fgets(STDIN));
// Чтение двух ключей
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));
// TODO: Напишите свой код ниже
// 1. Создайте ассоциативный массив из входных данных JSON с помощью json_decode
// 2. Получите доступ и выведите значение, связанное с $key1
// 3. Сохраните значение, связанное с $key2, в переменную с именем $info
// 4. Выведите значение, хранящееся в $info
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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